Pandas 不能打开 Excel (.xlsx) 文件

请参阅我的代码如下:

import pandas
df = pandas.read_excel('cat.xlsx')

在运行该命令之后,它会给我以下错误:

Traceback (most recent call last):
File "d:\OneDrive\桌面\practice.py", line 4, in 
df = pandas.read_excel('cat.xlsx')
File "D:\python\lib\site-packages\pandas\util\_decorators.py", line 296, in wrapper
return func(*args, **kwargs)
File "D:\python\lib\site-packages\pandas\io\excel\_base.py", line 304, in read_excel
io = ExcelFile(io, engine=engine)
File "D:\python\lib\site-packages\pandas\io\excel\_base.py", line 867, in __init__
self._reader = self._engines[engine](self._io)
File "D:\python\lib\site-packages\pandas\io\excel\_xlrd.py", line 22, in __init__
super().__init__(filepath_or_buffer)
File "D:\python\lib\site-packages\pandas\io\excel\_base.py", line 353, in __init__
self.book = self.load_workbook(filepath_or_buffer)
File "D:\python\lib\site-packages\pandas\io\excel\_xlrd.py", line 37, in load_workbook
return open_workbook(filepath_or_buffer)
File "D:\python\lib\site-packages\xlrd\__init__.py", line 170, in open_workbook
raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported

我尝试用 pip 命令卸载和重新安装 Pandas 。错误仍然存在。我已经安装了 xlrd 2.0.1和 Pandas 1.1.5。

148456 次浏览

最新版本的 xlrd (2.0.1)只支持. xls 文件。

如果您准备冒潜在的安全漏洞的风险,并且冒某些文件解析不正确的风险,那么可以通过安装较早版本的 xlrd 来解决这个错误。

在 shell 或 cmd 提示符中使用下面的命令:

pip install xlrd==1.2.0

正如 发送电子邮件所指出的,与 发推特相连,在 文件的头版上有一个橙色的大警告,在 在回购上读我的名字释放 Pypi中橙色较少,但仍然存在:

Xlrd 显式删除了对 xls 文件以外的任何内容的支持。

这是由于与使用 xlrd1.2或更早版本读取 .xlsx文件有关的潜在安全漏洞造成的。

对你来说,解决方法是:

  • 请确保您使用的是熊猫的最新版本,至少是1.0.1,最好是最新版本。
  • 安装 openpyxl: https://openpyxl.readthedocs.io/en/stable/
  • 把你的熊猫代码改成:
    pandas.read_excel('cat.xlsx', engine='openpyxl')
    

编辑: 目前,熊猫 > = 1.2解决了这个问题

最好的方法可能是使 openpyxl 成为 read _ excel ()的默认读取器,以防您的旧代码由于此更新而中断。

您可以通过更改方法的默认值来完成这项工作,方法是转到环境的 Pandas 文件夹中的 _ base.py。你可在此找到以下资料:

import pandas as pd
print(pd.__file__)

打开文件并查找

def read_excel(...)

您将找到 engine 的默认值,将其更改为‘ openpyxl’

原始提示/答案: https://stackoverflow.com/a/69577391/7151338

我在使用 ExcelFile构造函数(用于包含多个工作表的文件)而不是使用 read_excel方法时遇到了同样的问题。在这种情况下,解决办法是:

import pandas


xlsx = pandas.ExcelFile('cat.xlsx', engine='openpyxl')

熊猫的最新版本支持 xlsx 文件。我有这个错误在 1.1.4和升级到 1.3.5

pip install --upgrade pandas

我不再使用 XLRDError.Older 版本也支持 xlsx 文件。