本文主要介绍Python中,使用pandas的read_excel()方法读取xlsx格式的excel文件报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法。

尝试使用pandas.read_excel读取一个启用宏的Excel工作表。使用xlrd在本地运行良好,但当我试图将相同的内容push到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

问题原因:

使用xlrd1.2 或更早版本读取.xlsx文件相关的潜在安全漏洞。最新版本的 xlrd (2.0.1) 仅支持 .xls 文件。

解决方法:

确保使用的是最新版本的 Pandas,至少是 1.0.1,最好是最新版本。安装openpyxl(https://openpyxl.readthedocs.io/en/stable/),使用如下代码读取:

df1 = pd.read_excel(
os.path.join(APP_PATH, "Data", "aug_latest.xlsm"),
engine='openpyxl',
)

或者

参考文档Python pandas read_excel打开读取Excel(.xlsx)报错 xlsx file; not supported解决方法


推荐文档