Python 读取 Excel 文件 openpyxl 和 xlrd 库性能对比及选型建议

文章导读
Python 读取 Excel 文件时,openpyxl 适用于 .xlsx 格式的读写操作,xlrd 仅适用于 .xls 格式的读取操作。选型核心取决于文件格式及是否需要写入功能,xlrd 2.0 及以上版本已不再支持 .xlsx 格式。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

Python 读取 Excel 文件时,openpyxl 适用于 .xlsx 格式的读写操作,xlrd 仅适用于 .xls 格式的读取操作。选型核心取决于文件格式及是否需要写入功能,xlrd 2.0 及以上版本已不再支持 .xlsx 格式。

先说结论:根据文件格式和读写需求选择库,.xlsx 用 openpyxl,.xls 用 xlrd,避免混用导致报错。

  • 适合:.xlsx 文件读写选 openpyxl,.xls 文件只读选 xlrd
  • 重点看:xlrd 2.0+ 版本已移除 .xlsx 支持,需确认版本
  • 别忽略:大文件读取时 openpyxl 可开启只读模式降低内存占用

命令速用版

安装依赖库命令如下,根据需求选择其中一个或全部安装:

pip install openpyxl
pip install xlrd==1.2.0

若需读取 .xlsx 文件,不要安装 xlrd 2.0 以上版本,或使用 openpyxl 替代。

为什么会这样

Excel 文件格式底层结构不同决定了库的兼容性差异。.xls 是 Excel 2003 及之前版本使用的二进制格式,xlrd 针对该格式优化读取速度;.xlsx 是 Excel 2007 及之后版本基于 XML 的压缩格式,openpyxl 原生支持该结构的解析与写入。公开资料中没有看到可靠的量化数据表明哪个库在所有场景下绝对更快,但 xlrd 在处理 .xls 时通常轻量,openpyxl 在处理 .xlsx 时功能更全。

分步处理

第一步:检查文件扩展名。确认文件是 .xls 还是 .xlsx,这直接决定库的选择。

第二步:安装对应库。若为 .xlsx,执行pip install openpyxl;若为 .xls 且只需读取,执行pip install xlrd

Python 读取 Excel 文件 openpyxl 和 xlrd 库性能对比及选型建议

第三步:编写读取代码。openpyxl 使用load_workbook加载,xlrd 使用open_workbook加载。

第四步:处理大文件。若使用 openpyxl 读取大型 .xlsx 文件,添加参数read_only=True以避免内存溢出。

怎么验证是否生效

运行代码后检查是否抛出异常。若使用 xlrd 读取 .xlsx 文件报错XLRDError,说明格式不兼容。成功读取后打印行数nrows或单元格值确认数据完整性。对于 openpyxl,检查workbook.sheetnames是否返回预期工作表名称。

常见坑

xlrd 版本陷阱:xlrd 2.0.1 及更高版本不再支持 .xlsx 文件,强行读取会报错,需降级到 1.2.0 或改用 openpyxl。

内存占用问题:openpyxl 默认加载整个文件到内存,处理几百 MB 以上文件时建议使用只读模式。

格式混淆:不要试图用 xlrd 写入文件,它仅支持读取;写入 .xls 需使用 xlwt,写入 .xlsx 需使用 openpyxl 或 XlsxWriter。

Python 读取 Excel 文件 openpyxl 和 xlrd 库性能对比及选型建议

常见问题

xlrd 和 openpyxl 哪个读取速度更快?

取决于文件格式和测试环境。有测试数据显示在处理 1000 行 30 列数据时,xlrd 读取 .xls 耗时较少,但 openpyxl 是读取 .xlsx 的必要选择。

openpyxl 能读取 .xls 文件吗?

不能。openpyxl 仅支持 .xlsx、.xlsm 等现代格式,读取 .xls 文件需使用 xlrd 库。

如何读取加密的 Excel 文件?

openpyxl 部分支持密码保护文件,但 xlrd 不支持密码保护。复杂加密文件可能需要其他专用库或手动解密。

参考来源

xlrd vs openpyxl:Python Excel 库对比分析与使用场景指南

PyCharm 中读取 Excel 文件的三种主流方法及性能对比

Python 读取 Excel 文件 openpyxl 和 xlrd 库性能对比及选型建议

Python 读取 Excel 文件:openpyxl 与 pandas 实战对比

python 中读取 Excel 文件使用 pandas、xlrd、openpyxl 性能对比

用 Python 自动化处理 Excel:openpyxl 与 xlrd 对比,批量生成报表不再加班

Excel 处理库深度对比:openpyxl 与 xlrd 的实战解析

python 读取文件 xlrd or openpyxl

Python 中操作 Excel 的七大模块对比终极指南