1.库的选择
xlrd库一般用于读取excel文件中的数据;
xlwt库用于将数据写入excel文件;
xlutils库通过复制一个副本文件进行操作后保存一个新文件,通过copy模块将xlrd.Book对象转换为xlwt.Workbook对象,从而实现了原始excel文件的编辑功能。 PS:一般如果数据量不是很大可以用这3个库完成读写更新,如果数据量很大直接用pandas库
2.读取数据
1)库的安装 pip install xlrd
2)支持xlsx、xls格式的excel表格
3)操作步骤:
- 打开工作薄(Workbook)
- 选择工作表(sheets)
- 操作单元格(cell)
4)举例
import xlrd
# 读取表格数据
wd = xlrd.open_workbook("D:\my_project\up_ver_sn_V1.xlsx")
# 通过名称获取
sheet = wd.sheet_by_name("off")
# 获取行数
rows = sheet.nrows
# 获取列数
cols = sheet.ncols
# 获取具体某一整行数据
rowData = sheet.row_values(** **行索引号** **)
# 获取具体某一整列数据
colDate = sheet.col_values(** **列索引号** **)
# 通过循环读取表格的所有行
for i in range(0, rows):
print(sheet.cell_value(i, 2))# 打印具体某一单元格数据
# 获取单元格的值
a = sheet.row(0)[0]
a = sheet.cell(0,0)
a = sheet.col(0)[0]
3.写数据
1)库的安装 pip install xlwt
2)操作步骤:
- 新建工作薄(Workbook)
- 添加工作表(add_sheet)
- 写入数据(write)
- 保存工作薄(save)
3)创建样式:
#初始化样式
style=xlwt.XFStyle()
#为样式创建字体
font=xlwt.Font()
#指定字体名字
font.name='Times New Roman'
#字体加粗
font.bold=True
#将该font设定为style的字体
style.font=font
#写入到文件时使用该样式
sheet.write(0,1,'XXXx',style)
4)举例
import xlwt
# 创建Excel文件对象、表格页sheet
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet名称')
# sheet页中写入表头
worksheet.write(0, 0, label='key')
worksheet.write(0, 1, label='value')
#写入具体内容
worksheet.write(1, 0, label='XXXX')
worksheet.write(1, 1, label='YYYY')
# 保存Excel文件
workbook.save(file_name)
4.更新数据
1)库的安装 pip install xlutils
2)操作步骤:
- 打开需要更改的excel(Workbook)
- 将操作文件对象拷贝,变成workbook对象(copy)
- 获取工作表(sheet)
- 写入更新数据(write)
- 保存工作薄(save)
3)注意点 formatting_info默认为False,改成True可以将表格的格式、规则、宏等带过来 但是如果文件为xlsx格式时,formatting_info=True会抛出异常,而读取xls类型的文件时不存在此问题。
解决方式: 修改xlsx为xls(推荐)
4)举例
import xlrd
import xlwt
from xlutils.copy import copy
# 打开想要更改的excel文件
old_excel = xlrd.open_workbook('test.xlsx', formatting_info=True)
# 将操作文件对象拷贝,变成可写的workbook对象
new_excel = copy(old_excel)
# 获得第一个sheet的对象
ws = new_excel.get_sheet(0)
# 写入数据
ws.write(0, 0, '第一行,第一列')
ws.write(0, 1, '第一行,第二列')
ws.write(0, 2, '第一行,第三列')
ws.write(1, 0, '第二行,第一列')
ws.write(1, 1, '第二行,第二列')
ws.write(1, 2, '第二行,第三列')
# 另存为excel文件,并将文件命名,可以重新命名,也可以覆盖掉
new_excel.save('test.xlsx')