在工作生活中,我们经常会接触各种Excel表格,有时需要对Excel数据进行处理,人工对大批量数据的重复操作费时又费力,所以不妨试试用Python帮你自动化完成重复的工作。
Python读取Excel文件使用的第三方模块有很多,常见的有:
xlrd,读取Excel数据,兼容性好,支持 .xls 及 .xlsx ,如果想要写入/修改Excel,需要配合使用 xlwt
xlwings,支持 .xls 读取以及 .xlsx 读写
openpyxl,仅支持 Excel 2010 之后的文件类型,支持读写 .xlsx ,功能强大,缺点是不支持 .xls
win32com,是 pywin32 中的模块,支持 .xls 及 .xlsx 文件的读写
pandas,非常强大的一个库,常用作数据分析,支持 .xls 及 .xlsx文件的读写
进入正题,openpyxl 由于其强大的功能,因此有很多开发人员使用这个第三方库,下面就来看一下 openpyxl 如何读取Excel文件吧!
前提条件
1、安装好 python 环境(本文版本3.10.7)
2、安装 openpyxl 模块,pip install openpyxl
读取Excel
一个Excel文件打开后叫工作薄 workbook ,每个工作薄可以有多张表 worksheet ,每张表有行 row 和列 column ,行列交汇的格子叫单元格 cell。
导入模块
from openpyxl import *
打开文件
wb = load_workbook("文件.xlsx")
获取所有工作表名称
sheet_names = wb.sheetnames
得到工作表对象
ws = wb["工作表名称"]
得到行对象
row = ws[2],表示第2行
得到列对象
col = ws['B'],表示第2列
得到单元格对象
cell = ws["B2"]
cell = ws.cell(row=2, column=2)
得到指定区域对象
area = ws[2:5],第2行到第5行的区域
area = ws['C:D'],第C列到第D列的区域
area = ws['A1:C3'],左上角A1到右下角C3的区域
单元格 cell 属性
获取最大行和最大列
ws.max_row 和 ws.max_column
简单示例代码:
# 导入模块
from openpyxl import *
def read_excel_file(filename):
# 打开xlsx,得到workbook对象
wb = load_workbook(filename)
# 获取所有sheet名
sheet_names = wb.sheetnames
for name in sheet_names:
# 得到worksheet对象
ws = wb[name]
# 循环每一行
for i in range(ws.max_row):
# for j in range(ws.max_column):
# 每一行的第二列
cell = ws.cell(row=i+1, column=2)
print(cell.value)
read_excel_file("1.xlsx")