模块安装
Python操作excel可以使用openpyxl、xlrd/xlwt模块,二者区别在于xlwt只能操作.xls文件,openpyxl则是针对.xlsx文件。文件较小时,二者差别不明显,但如果操作较大文件时,xlrd/xlwt的速度是优于openpyxl的,本文以openpyxl为例。
pip install openpyxl
Excel数据的类型及组织方式
每一个Excel数据文件从上至下分为三个层级 的对象:
workbook:每一个Excel文件就是一个workbook。
sheet:每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。
cell:每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells。
- Workbook就是一个excel工作表;
- Sheet是工作表中的一张表页;
- Cell就是简单的一个格。
openpyxl就是围绕着这三个概念进行的,不管读写都是“三板斧”:打开Workbook,定位Sheet,操作Cell。
官方文档:https://openpyxl.readthedocs.io/en/stable/
写操作
book = openpyxl.Workbook()
sheet = book.active # 获取默认的sheet页
# sheet = book.create_sheet("yyds") # 创建一个新的sheet页
sheet.append([1,2,3]) # 写一整行
sheet.append([4,5,6]) # 写一整行
sheet.cell(1,1,"编号") # 指定第一行第一列的单元格内容
book.save("number.xls") # 保存文件
执行代码后生成的excel文件
读数据book = openpyxl.load_workbook("number.xlsx")
sheet = book.active
# sheet = book["Sheet"] # 指定的sheet
print("总行数:", sheet.max_row) # 多少行
print("总列数:", sheet.max_column) # 多少列
print(list(sheet.values)) # 所有行
for v in sheet.values: # 获取所有行
print(v)
for col in sheet.columns: # 获取所有的列
col = [r.value for r in col]
print(col)
print(sheet.cell(1, 1).value) # 获取指定单元格的内容
输入内容:
总行数: 2
总列数: 3
[('编号', 2, 3), (4, 5, 6)]
('编号', 2, 3)
(4, 5, 6)
['编号', 4]
[2, 5]
[3, 6]
编号



