使用datatable 1.0.0版本的dt.fread读取Excel文件时出现AttributeError:module 'xlrd' has no attribute 'xlsx'的解决方法求助
解决datatable fread读取XLSX文件时的AttributeError问题
这个问题我之前帮同事排查过,根源很清晰:xlrd从2.0版本开始完全砍掉了对XLSX格式的支持,只保留了XLS格式的处理能力。而你用的datatable 1.0.0版本里,read_xls_workbook函数还在试图调用xlrd.xlsx下面的属性,这就导致了找不到属性的报错。
给你三个可行的解决思路:
1. 降级xlrd到1.2.0版本(最快临时修复)
xlrd 1.2.0是最后一个支持XLSX的版本,降级后能完美适配datatable 1.0.0的现有代码:
pip install xlrd==1.2.0
装完之后再跑你的读取代码,应该就能正常工作了。
2. 换用其他库读取后转datatable
如果不想降级xlrd,你可以先用pandas这类支持XLSX的库读文件,再转成datatable的Frame对象:
import pandas as pd import datatable as dt # 用pandas读取xlsx pd_df = pd.read_excel("myFile.xlsx") # 转换为datatable的DataTable DT = dt.Frame(pd_df)
这种方式绕开了datatable对xlrd的依赖问题,也能满足你处理数据的需求。
3. 升级datatable到最新版(推荐长期方案)
datatable的后续版本应该已经修复了这个兼容性bug,直接升级到最新版是最稳妥的:
pip install --upgrade datatable
新版本要么调整了XLSX的读取逻辑,要么适配了xlrd的版本变化,不会再出现这种属性找不到的问题。
另外提一句:如果你的文件是XLS格式,那xlrd 2.0+版本没问题,但XLSX文件必须用上面的方案处理才行。
内容的提问来源于stack exchange,提问作者Hani
相关产品推荐
相关产品推荐

