使用python做数据处理经常需要操作excel文件,我比较喜欢pandas,可以方便快捷的操作excel,csv等格式的文件。但是有时候只需要读写excel数据,不需要对数据进行复杂的运算,这时候用pandas就感觉大炮打蚊子了。所以,这里基于xlrd和xlwt两个excel操作库封装了几个简单易用的方法。
说明:
- read方法用于将excel数据转化为二维列表
- read_dict方法用于将excel数据转化为字典列表
- write方法用于输出数据到excel
代码如下,excel.py:
import xlrd
import xlwt
def get_real_value(value):
"""
获取真实值,由于xlrd读取excel的整数时使用float表示,导致整数带有小数点,所以这里需要做处理
:param value:
:return:
"""
if type(value) is float:
if value % 1 == 0:
return int(value)
return value
def read(path, sheet_index=0):
"""
读取Excel文件
:param path: 文件路径,包含文件名称
:param sheet_index: Excel表单索引
"""
workbook = xlrd.open_workbook(path)
sheet = workbook.sheet_by_index(sheet_index)
rows = sheet.nrows
data = []
for r in range(rows):
data.append(list(map(get_real_value, sheet.row_values(r))))
return data
def read_dict(path, sheet_index=0):
"""
读取Excel文件\n
:param path: 文件路径,包含文件名称
:param sheet_index: Excel表单索引
"""
workbook = xlrd.open_workbook(path)
sheet = workbook.sheet_by_index(sheet_index)
header = sheet.row_values(0)
rows = []
for r in range(1, sheet.nrows):
row_values = sheet.row_values(r)
row_dict = {}
for c in range(sheet.ncols):
cell_value = get_real_value(row_values[c])
row_dict[header[c]] = cell_value
rows.append(row_dict)
return rows
def write(path, rows):
"""
将数据写入Excel文件\n
:param path: 文件路径,包含文件名称
:param rows: 二维数组数据列表
"""
workbook = xlwt.Workbook(encoding='utf-8')
# 创建表
worksheet = workbook.add_sheet('sheet 0')
# 写数据
for row_index in range(len(rows)):
row = rows[row_index]
for col_index in range(len(row)):
cell = row[col_index]
worksheet.write(row_index, col_index, label=cell)
# 保存
workbook.save(path)
使用示例:
import excel
excel.write('test.xls', [['编号', '姓名', '年龄'], ['1', '小明', 10], ['2', '花花', 8]])
print(excel.read('test.xls'))
print(excel.read_dict('test.xls'))
输出结果:
[['编号', '姓名', '年龄'], ['1', '小明', 10], ['2', '花花', 8]]
[{'编号': '1', '姓名': '小明', '年龄': 10}, {'编号': '2', '姓名': '花花', '年龄': 8}]
生成的excel文件: