xlrd.biffh.XLRDError: Excel xlsx 文件;不支持

Vig*_*h K 194 python xlrd pandas pcf

我正在尝试使用pandas.read_excelxlrd 库读取启用宏的 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
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

Chr*_*ers 356

正如发布电子邮件中所指出的,从发布推文中链接到并在文档首页出现的大橙色警告中指出,在存储库自述文件pypi上的版本中橙色警告较少,但仍然存在:

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

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

  • 安装模块 `pip install openpyxl` 并在我的所有 read_excel 函数中包含 openpyxl 引擎 `read_excel("my.xlsx",engine='openpyxl') ` 节省了我的代码和时间!非常感谢@ChrisWithers! (12认同)
  • 作为一个实际上不知道 pandas 正在使用 xlrd 打开 xlsx 文件的用户,来自代码的弃用警告将非常有用......我无法阅读我所使用的所有库的所有邮件列表可能正在使用我的代码中 3 层深处的某个地方...... (9认同)
  • Chris,感谢 xlrd 更新以支持 Python 3.9。然而,这是软件包中的一个重大更改,没有弃用警告,因此我建议提供更具信息性的错误消息,例如澄清 xlrd 何时(日期和版本)放弃对非 xls 文件的支持。 (7认同)
  • 很好的答案,但是被动的攻击性、居高临下的语气对众多技术水平较低的 pandas 用户没有帮助。就像脾气暴躁的 TSA 筛选员一样,您假设每个公众都像您对某个软件一样熟悉。 (4认同)
  • @KairatKoibagarov - 正如我已经多次说过的那样,以我作为 xlrd 维护者的身份:这是一个极其糟糕的选择。 (3认同)
  • @ChristopherTurnbull 指定工作表名称是可选的。如果省略它,将打开文件中的第一个工作表。 (2认同)
  • 我安装 pandas==1.1.4 和 xlrd==1.2.0 (2认同)

小智 164

以前的版本 xlrd 1.2.0 可能看起来有效,但它也可能使您面临潜在的安全漏洞。有了这个警告,如果您仍然想试一试,请键入以下命令:

pip install xlrd==1.2.0
Run Code Online (Sandbox Code Playgroud)

  • 这绝对是错误的答案。不要使用 xlrd 读取 xlsx 文件,请使用 https://openpyxl.readthedocs.io/en/stable/。 (41认同)
  • 它对我有用!非常感谢!! (5认同)
  • @ChrisWithers 为什么这个决定而不是修复对 xlsx 的支持? (4认同)
  • @tryhard “潜在的安全漏洞”是什么意思? (3认同)