简介
python中通过xlwt、xlrd和xlutils三个模块操作xls文件。这三个模块的区别如下:
- xlwt:xlwt用于在内存中生成一个xlsx/xls对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件。
- xlrd:xlrd用于把本地xls文件加载到内存中,可以读取xls文件的表格数据,查询xls文件的相关信息。
- xlutils:xlutils模块是xlrd和xlwt之间的桥梁,读取xls文件可以使用xlrd,新建创建文件可以使用xlwt,而修改文件则使用xlutils;可以使用xlutils模块中的copy模块拷贝一份通过xlrd读取到内存中的xls对象,就可以在拷贝对象上像xlwt中那样修改xls表格的内容,并保存到本地。
除此之外,还有一些其他的模块也可以用于操作excel文件,如xlwings、openyxl、xlsxwriter、win32com和pandas库
三个模块的安装方法
还是使用pip指令进行安装,具体如下:
- xlwt:
pip install xlwt
- xlrd:
pip install xlrd
- xlutils:
pip install xluntils
使用示例
1、创建excel文件——xlwt的用法
# 创建一个excel对象
excel = xlwt.Workbook()
# 然后添加一个sheet表单
sheet1 = excel.add_sheet("sheet1")
# 添加自己想写入表单的数据
sheet1.write(0,0,"name") #向(0,0)单元格写入name
sheet1.write(0,1,"age") #向(0,1)单元格写入age
sheet1.write(1,0,"小明") #向(1,0)单元格写入小明
sheet1.write(1,1,18) #向(1,1)单元格写入18
# 保存文件
excel.save("exapmle.xls")
运行结果:
2、读取excel文件——xlrd的用法
- 基本用法——读取指定单元格的数据
# 打开excel文件
excel = xlrd.open_workbook("exapmle.xls")
# 打开sheet表单
sheet1 = excel.sheet_by_name("sheet1") #通过表单名打开表单
# sheet1 = excel.sheet_by_index(0) #通过表单的序号打开表单,序号从0开始
# 获取表单中单元格的值
cell_value0_0 = sheet1.cell(0,0).value #获取单元格(0,0)的值
cell_value0_1 = sheet1.cell_value(0,1) #获取单元格(0,1)的值
cell_value1_0 = sheet1.cell_value(1,0) #获取单元格(1,0)的值
cell_value1_1 = sheet1.cell(1,1).value #获取单元格(1,1)的值
#输出获取到的结果
print(cell_value0_0,cell_value0_1)
print(cell_value1_0,cell_value1_1)
- get_rows()——读取表单中的所有数据
# 除此之外,还可以使用以下方法获取excel中的所有数据
for i in sheet1.get_rows():#使用get_rows()方法,返回一个生成器
print(i)
运行结果如下图:
运行结果:
3. ncols和nrows——获取表单中数据的行数和列数
#获取列数
cols = sheet1.ncols
#获取行数
rows = sheet1.nrows
#输出结果
print(cols,rows)
输出结果:
注: 不管哪个操作,都要先打开相应表单才可以进行后续操作。
3、修改文件
# 导入模块
from xlutils.copy import copy
import xlrd
# 打开想要修改的excel文件
excel = xlrd.open_workbook("exapmle.xls")
# 复制想要修改的文件
excel_copy = copy(excel)
# 打开想要修改的表单
sheet1 = excel_copy.get_sheet("sheet1") #此处可以填入序号或者表单名
# 修改想要修改的单元格
sheet1.write(1,0,"小李") #修改(1,0)单元格数据为小李
sheet1.write(1,1,23) #修改(1,1)单元格数据为23
# 保存修改过后的文件
excel_copy.save("exapmle.xls")
修改前的结果:
修改后的结果: