【bug】XLRDError: Excel xlsx file; not supported

博主在将代码从台式机转移到笔记本时遇到ImportError,原因是最新版xlrd不支持.xlsx文件。解决方案是安装旧版xlrd或使用openpyxl。通过在`pd.read_excel`中添加`engine='openpyxl'`参数成功解决问题。提醒程序员注意代码移植时保持环境一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天儿童节,记录一个bug。

楼主写的一套代码是在公司的台式机上,今天需要下基层,就把项目代码拷贝到U盘,然后在基层用笔记本运行代码的时候出现:

raise ImportError(msg) from None
ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.

其实出现这个报错的时候,我就很惊讶。。。因为之前在笔记本上运行过类似的代码(相同环境下),今天怎么就不行了。

根据提示,安装了xlrd

pip install xlrd

然后,再运行代码出现:

 raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
XLRDError: Excel xlsx file; not supported

楼主表示很无奈。。。

解决办法:

出错的语句:

data = pd.read_excel('www.xlsx', sheet_name='C1')

在后面加engine=‘openpyxl’,解决问题

data = pd.read_excel('www.xlsx', sheet_name='C1',engine='openpyxl')

大总结:

原因是pip安装的是最新的xlrd包,只支持.xls文件。所以pd.read_excel(‘xxx.xlsx’)会报错

解决方法1: 安装旧版xlrd

pip uninstall xlrd

pip install xlrd==1.2.0

解决方案2: 使用openpyxl包

pd.read_excel(‘xxx.xlsx’, engine=‘openpyxl’)

友情提醒:
代码移植(运行)时,一定要配置相同的环境,python版本,相应依赖库的版本。

参考:
https://blog.youkuaiyun.com/m0_67457639/article/details/123746623
https://www.jianshu.com/p/ee893ecae0f5

<think>好的,用户在使用pandas读取xlsx文件时遇到了XLRDError错误,需要找到解决办法。首先,我需要回忆一下这个错误的常见原因。XLRD库在较新版本的pandas中已经不再支持xlsx格式,只支持xls。所以当用户尝试用pd.read_excel读取xlsx文件时,如果引擎还是默认的xlrd,就会报错。 接下来,用户可能需要安装其他引擎,比如openpyxl。根据引用[1]中的信息,解决方案是安装openpyxl并在读取时指定engine参数。因此,我应该建议用户先安装这个库,然后在代码中显式设置engine='openpyxl'。同时,要确保pandas版本不是太旧,可能需要升级pandas。 另外,需要检查用户是否安装了正确的库,有时候虽然安装了openpyxl,但可能版本不兼容,导致问题。所以应该提醒用户安装最新版本的openpyxl。此外,如果用户的环境中有多个Python版本,可能需要确认安装到了正确的环境中。 还有,用户可能会遇到文件路径错误的问题,虽然错误提示不同,但最好也检查一下文件路径是否正确,避免其他潜在问题。比如使用绝对路径或者确认文件是否存在。 另外,引用[2]中提到导出多个数据框到Excel的不同sheet,虽然和当前问题无关,但说明用户可能在处理Excel文件时有多表操作的需求,可能需要后续建议如何处理多个sheet的情况,但当前问题主要解决读取错误。 最后,确保回答结构清晰,分步骤说明解决方法,并给出示例代码,让用户能一步步操作。同时,生成相关问题帮助用户深入理解,比如处理旧版本xls文件,处理多个sheet,以及导出Excel的方法。这样用户不仅能解决当前问题,还能扩展相关知识。</think>### 解决方案:Pandas读取xlsx文件出现XLRDError的原因及解决步骤 #### 1. 错误原因分析 `XLRDError: Excel xlsx file not supported`错误是由于pandas默认使用的`xlrd`引擎在较新版本中已停止支持`.xlsx`格式文件(仅支持`.xls`)。需要通过以下两种方式解决: #### 2. 解决方法 **步骤1:安装`openpyxl`引擎** ```bash pip install openpyxl ``` *若使用虚拟环境,需在对应环境中安装*[^1] **步骤2:指定引擎读取文件** ```python import pandas as pd dataframe = pd.read_excel('/path/to/file.xlsx', engine='openpyxl') ``` #### 3. 补充说明 | 情况 | 解决方案 | 代码示例 | |------|----------|----------| | 旧版`.xls`文件 | 使用默认引擎`xlrd` | `pd.read_excel('file.xls')` | | 多sheet操作 | 通过`sheet_name`参数指定 | `pd.read_excel('file.xlsx', sheet_name='Sheet2', engine='openpyxl')` | | 写入Excel文件 | 使用`to_excel`方法 | `df.to_excel('output.xlsx', engine='openpyxl')` | #### 4. 验证环境配置 ```python # 检查库版本 print(pd.__version__) # 需≥1.2.0 import openpyxl print(openpyxl.__version__) # 需≥3.0.0 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值