最常用、最可靠的方式是使用openpyxl库,它专为读写.xlsx等Office Open XML格式设计,纯Python实现、跨平台稳定;支持工作簿→工作表→单元格三级操作,可高效读取数据、样式、合并单元格及公式结果。
用Python解析XLSX文件,最常用、最可靠的方式是使用 openpyxl 库。它专为读写 Office Open XML 格式(即 .xlsx、.xlsm、.xltx、.xltm)设计,完全支持 Excel 2007+ 的标准,无需依赖 Excel 程序本身,纯 Python 实现,跨平台稳定。
在终端或命令行中运行:
注意:不要装错成 xlrd(旧版仅支持 .xls)或 pyexcel(封装层,底层仍可能调用其他库)。
openpyxl 以“工作簿 → 工作表 → 单元格”三级结构操作数据。默认读取所有内容(包括公式结果),不执行公式计算(只取已计算值)。
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) —— 遍历整列 Cfor 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),但会牺牲便携性与性能。