最常用、最可靠的方式是使用openpyxl库,它专为读写.xlsx等Office Open XML格式设计,纯Python实现、跨平台稳定;支持工作簿→工作表→单元格三级操作,可高效读取数据、样式、合并单元格及公式结果。

用Python解析XLSX文件,最常用、最可靠的方式是使用 openpyxl 库。它专为读写 Office Open XML 格式(即 .xlsx、.xlsm、.xltx、.xltm)设计,完全支持 Excel 2007+ 的标准,无需依赖 Excel 程序本身,纯 Python 实现,跨平台稳定。
安装 openpyxl
在终端或命令行中运行:
- pip install openpyxl
注意:不要装错成 xlrd(旧版仅支持 .xls)或 pyexcel(封装层,底层仍可能调用其他库)。
读取工作表与单元格数据
openpyxl 以“工作簿 → 工作表 → 单元格”三级结构操作数据。默认读取所有内容(包括公式结果),不执行公式计算(只取已计算值)。
立即学习“Python免费学习笔记(深入)”;
- 用
load_workbook("file.xlsx")打开文件(read_only=True可显著提升大文件读取速度) - 用
wb.active获取默认工作表,或wb["Sheet1"]按名获取 - 单元格可通过坐标访问:
ws["A1"]或ws.cell(row=1, column=1) - 获取值用
.value属性,例如ws["B2"].value返回字符串、数字或None
遍历行与列(避免硬编码索引)
推荐用迭代器方式处理数据,更清晰且内存友好:
-
for row in ws.iter_rows(min_row=2, max_row=10, values_only=True):—— 直接返回每行的值元组,跳过表头(第1行) -
for cell in ws["C"]: print(cell.value)—— 遍历整列 C -
for col in ws.iter_cols(min_col=1, max_col=3, values_only=True):—— 按列迭代,每项是该列所有值的元组
参数 values_only=True 是关键,否则返回的是 Cell 对象,需额外调用 .value。
处理样式、合并单元格与公式(进阶场景)
openpyxl 支持读取格式信息,但要注意限制:
- 字体、填充、边框等样式可通过
cell.font、cell.fill等属性读取(仅限读取,不渲染) - 合并单元格范围用
ws.merged_cells.ranges获取,返回MergedCellRange对象列表,如"A1:C3" - 公式存储在
cell.value中(以"=SUM(A1:A10)"形式),但 openpyxl 不计算公式——它读的是 Excel 保存时的最后计算结果(即cell.data_type == "f"表示含公式,.value是结果值)
若需实时计算公式,需另配引擎(如 pycel)或改用 Excel 进程(win32com,仅 Windows),但会牺牲便携性与性能。










