python xlrd使用_Python 使用xlrd 读取 Excel遇到错误

从某系统导出的xls文件,用wps、excel读取正常,python里用xlrd读取时,总是报错:

ff = xlrd.open_workbook(filename)

_locate_stream(Workbook): seen

0 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3

20 2

Workbook corruption: seen[2] == 4

百度找到的解决方案是修改xlrd模块的源文件compdoc.py,打开该文件,找到426行代码

if self.seen[s]:

print("_locate_stream(%s): seen" % qname, file=self.logfile); dump_list(self.seen, 20, self.logfile)

raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))

注解这三行代码即可。

但是考虑到修改模块源代码方式太不优雅,一旦升级模块,又必须手工修改,部署到不同机器时,还要再修改。

于是探索第二种方法,寻找替代模块:

1.openpyxl 只能读取xlsx格式。

pandas 其内部实现还是调用xlrd,不行。

win32com 只能用于windows平台

虽然很不情愿,只能回到第一种方案。

一个细节:用wps、excel打开,并保存后,xrld就能正常读取,说明是文件本身问题。后续从文件着手寻找办法。

续:一个的新的选择是xlwings,可惜只支持windows和Mac系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值