xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

Posted

技术标签:

【中文标题】xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]【英文标题】:xlrd.biffh.XLRDError: Excel xlsx file; not supported [duplicate] 【发布时间】:2021-03-23 01:22:16 【问题描述】:

我正在尝试使用带有 xlrd 库的 pandas.read_excel 读取启用宏的 Excel 工作表。它在本地运行良好,但是当我尝试将其推送到 PCF 中时,出现此错误:

2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] df1=pd.read_excel(os.path.join(APP_PATH, os.path.join("Data", "aug_latest.xlsm")),sheet_name=None)

2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] return open_workbook(filepath_or_buffer)
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] File "/home/vcap/deps/0/python/lib/python3.8/site-packages/xlrd/__init__.py", line 170, in open_workbook
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] xlrd.biffh.XLRDError: Excel xlsx file; not supported

我该如何解决这个错误?

【问题讨论】:

这能回答你的问题吗? pandas cannot open xlsx file 【参考方案1】:

以前的版本 xlrd 1.2.0 可能看起来可以工作,但它也可能使您面临潜在的安全漏洞。排除警告后,如果您仍想尝试一下,请键入以下命令:

pip install xlrd==1.2.0

【讨论】:

这绝对是错误的答案。不要使用 xlrd 来读取 xlsx 文件,使用openpyxl.readthedocs.io/en/stable。 @tryhard “潜在的安全漏洞”是什么意思? @RicS - 来自我的编辑。 .xlsx 文件是包含 xml 的 zip 文件,zip 和 xml 都有已公开的安全问题,而 xlrd 在解决这些问题方面做得很差。 @ChrisWithers 为什么做出这个决定而不是修复对 xlsx 的支持? 它对我有用!!非常感谢!!【参考方案2】:

如release email 中所述,从release tweet 链接到documentation 的首页上出现的橙色大警告,在readme on the repository 和release on pypi:

xlrd 已明确删除对 xls 文件以外的任何内容的支持。

在您的情况下,解决方案是:

确保您使用的是最新版本的 Pandas,至少 1.0.1, 最好是最新版本。 1.2 会让他的 更清晰。 安装openpyxl:https://openpyxl.readthedocs.io/en/stable/ 将您的 Pandas 代码更改为:
df1 = pd.read_excel(
     os.path.join(APP_PATH, "Data", "aug_latest.xlsm"),
     engine='openpyxl',
)

【讨论】:

Chris,感谢 xlrd 更新以支持 Python 3.9。但是,这是包中的一项重大更改,没有弃用警告,因此我建议提供更多信息的错误消息,例如澄清何时(日期和版本)xlrd 放弃了对非 xls 文件的支持。 @ChristopherTurnbull 指定工作表名称是可选的。如果省略它,将打开文件中的第一个工作表。 @KairatKoibagarov - 作为 xlrd 的维护者,我已经多次说过:这是一个非常糟糕的选择。 安装模块 pip install openpyxl 并在我所有的 read_excel 函数中包含 openpyxl 引擎 read_excel("my.xlsx",engine='openpyxl') 节省了我的代码和时间!非常感谢@ChrisWithers! 不错的答案,但是被动的攻击性、居高临下的语气对 Pandas 的众多技术含量较低的用户没有帮助。就像脾气暴躁的 TSA 筛查员一样,您假设每个公众都像您一样熟悉某个软件。

以上是关于xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python3 使用 xlrd 库操作 excel.xlsx 时,报错: xlrd.biffh.XLRDError: Excel xlsx file; not supported

读取xlsx文件错误:xlrd.biffh.XLRDError: Excel xlsx file; not supported

Python错误解决xlrd.biffh.XLRDError: Excel xlsx file; not supported

Python错误解决xlrd.biffh.XLRDError: Excel xlsx file; not supported

Python 读取HTML表格 pd.read_html()

Exce信息提取