关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法

关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法

问题描述

在做机器学习实验时,需要将iris_train.xlsx等文件读入作为数据集,在运行代码:

import xlrd as xd

file_train_path = 'data/iris_train.xlsx'
file_train_xlsx = xd.open_workbook(file_train_path)
file_train_sheet = file_train_xlsx.sheet_by_name('Sheet1')
x_train = []
y_train = []
for row in range(file_train_sheet.nrows):
    x_data = []
    for col in range(file_train_sheet.ncols):
        if col < file_train_sheet.ncols-1:
            x_data.append(file_train_sheet.cell_value(row, col))
        else:
            y_train.append(file_train_sheet.cell_value(row, col))
    x_train.append(list(x_data))

print(x_train)
print(y_train)

有一行代码出现了问题:

file_train_xlsx = xd.open_workbook(file_train_path)

发生错误,报错信息如下:

在这里插入图片描述

报错信息:file_train_xlsx = xd.open_workbook(file_train_path)

报错原因

xlrd包的版本过高(2.0.1),不支持xlsx格式,只支持xls格式。

解决方法

  1. 调低xlrd包的版本,改为1.2.0

打开设置-Python解释器,双击xlrd包,选择指定版本下载。

在这里插入图片描述

  1. 把xlsx文件改为xls文件

结果

调低xlrd包的版本后,程序能顺利运行:

在这里插入图片描述

### 解决方案 当尝试使用 `xlrd` 处理 `.xlsx` 文件时,如果版本高于等于 2.0.0,则会遇到 `xlrd.biffh.XLRDError: Excel xlsx file; not supported` 错误。这主要是因为自该版本起,`xlrd` 停止了对 `.xlsx` 文件的支持[^1]。 为了克服这一局限并成功读取 `.xlsx` 文件,有多种替代方案可供选择: #### 方法一:采用 OpenPyXL 库 OpenPyXL 是专门用于处理 `.xlsx` 文件的强大工具之一。安装此库之后可以直接利用其功能来操作 Excel 文档而无需担心兼容性问题。 ```bash pip install openpyxl ``` 接着可以通过如下方式加载数据框: ```python import pandas as pd df = pd.read_excel('example.xlsx', engine='openpyxl') print(df) ``` 这种方法不仅解决了原生 `xlrd` 对于新格式文件支持不足的问题,同时也保留了 Pandas 提供的数据分析优势[^4]。 #### 方法二:降级 XLDR 版本至低于 2.0.0 另一种解决方案是回退到更早版本的 `xlrd` (即小于 2.0.0),这样就可以继续沿用原有的工作流程而不必更改太多现有代码逻辑。不过需要注意的是这样做可能带来安全性和性能上的隐患,并且长期来看并不是最优解法。 ```bash pip uninstall xlrd pip install "xlrd<2" ``` #### 方法三:转换文件格式为 .xls 或其他受支持格式 最后还可以考虑将目标文件另存为旧版 `.xls` 格式或其他任何由当前使用的解析器所接受的形式。然而这种方式通常较为繁琐而且容易丢失一些现代 Excel 功能特性,在实际应用中较少推荐使用。 综上所述,最理想的选择通常是切换到像 OpenPyXL 这样的现代化库来进行后续开发与维护活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

UestcXiye

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

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

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

打赏作者

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

抵扣说明:

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

余额充值