1.openpyxl模块了解
1.excel版本问题 03版本之前的excel文件后缀名xls 03版本之后的excel文件后缀名xlsx 2.python操作excel表格的模块 openpyxl 针对03版本之前的excel不是太兼容 xlrd(读)、xlwt(写) 兼容03版本之前和之后的 https://www.cnblogs.com/yangmeichong/p/10873920.html openpyxl其实也是pandas模块操作excel的底层模块 # 下载 pip3 install openpyxl 参考网站:https://openpyxl.readthedocs.io/en/stable/
2.Excel文件生成
from openpyxl import Workbook # 生成一个excel文件对象 wb = Workbook() # 创建工作簿,默认是在sheet后面 # w1 = wb.create_sheet('test') # wb1 = wb.create_sheet('test',0) # 还可以指定索引参数调整test位置 # 调整工作簿的位置 w1 = wb.create_sheet('工作簿01',index=0) w2 = wb.create_sheet('工作簿02') w3 = wb.create_sheet('工作簿03') # 二次修改工作簿名称 w1.title = 'MySheet01' # 保存文件 wb.save(r'aaa.xlsx')
3.openpyxl写数据
w1 = wb.create_sheet('工作簿01',index=0) # 写数据方式1 # w1['A1'] = 666 # 写数据方式2:在第2行第1列写数据999 # w1.cell(row=2,column=1,value=999) # 插入公式,注意等号一定要加,还可以写函数(比如excel支持的求和,求差等很多常见的函数) # w1['A5'] = '=sum(A1:A2)' # 创建表字段数据 w1.append(['序号','姓名','年龄','爱好']) # 添加表单数据 w1.append([1,'jason',18,'read']) w1.append([2,'tony',28,'music']) w1.append([3,'tom',38,'play']) # 数据多了 w1.append([4,'jerry',38,'play','江苏']) # 没有列字段对应 # 数据少了 w1.append([5,48,'run']) """ 针对缺失的数据 用None或者''占位 """ w1.append([6,None,48,'run']) w1.append([7,'',66,'read']) # 保存文件 wb.save(r'bbb.xlsx')
4.openpyxl读取数据
from openpyxl import load_workbook wb = load_workbook(r'bbb.xlsx',data_only=True)
# read_only=True 当读取一个较大的文件时,如果不适用这个参数会导致产生“MemoryError”错误,文件都加载到内存,导致内存空间不足报错
# wb = load_workbook('1.xlsx',read_only=True,data_only=True) # 获取所有工作簿的名称 # print(wb.sheetnames) # ['工作簿01', 'Sheet'] # 指定你需要操作的工作簿 w1 = wb['工作簿01'] # 读取数据方式1 # print(w1['A1'].value) # 读取数据方式2 # print(w1.cell(row=2,column=1).value) # 读取公式单元格数据 默认只能获取到公式 # print(w1['A5'].value) # =sum(A1:A2) """如果需要获取公式计算之后的结果 1.wb = load_workbook(r'aaa.xlsx',data_only=True) 2.针对代码生成的excel文件需要你去操作一下 """ # 读行数据 # for row in w1.rows: # row_data = [r.value for r in row] # print(row_data) # 读列数据 # for col in w1.columns: # col_data = [c.value for c in col] # print(col_data) print(w1.max_row) # 查看总共有多少行数据 print(w1.max_column) # 查看总共有多少列字段