前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于pd.read_excel()读取xls文件报错的解决办法

关于pd.read_excel()读取xls文件报错的解决办法

作者头像
诡途
发布2022-05-09 18:57:37
2.4K0
发布2022-05-09 18:57:37
举报
文章被收录于专栏:诡途的python路诡途的python路

报错信息:

代码语言:javascript
复制
 File "E:\Python\lib\site-packages\xlrd\compdoc.py", line 426, in _locate_stream
    raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))
xlrd.compdoc.CompDocError: Workbook corruption: seen[2] == 4

由于在电脑上直接打开excel,excel是正常的。 继续看报错信息,来自于源文件compdoc.py,打开该文件,找到426行代码,代码如下:

代码语言:javascript
复制
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]))

这是主动抛异常,将代码全部注释起来,再执行代码,发现读取正常。 总结一句话,第三库的源码有bug。。。

解决方案:

直接将上面三行代码注释掉

但是出于慎重起见,不太喜欢在底层库上进行修改,从而避免以后使用时出现问题 所以:—》 一)找到自己的第三方库存储路径:......\Anaconda3\Lib\site-packages 二)找到xlrd文件夹 复制一份随便命名 (eg:xlrdxcx) 三)注释副本 xlrdxcx 里 对应的 compdoc.py 中的三行代码 四)定义新的读取函数

代码语言:javascript
复制
#自定义xls文件读取函数
def read_xls_xcx(data_path,header=0):
    data=xlrdxcx.open_workbook(data_path)
    table = data.sheets()[0]
    nrows = table.nrows
    ncols = table.ncols
    result=[]
    for i in range(header,nrows):
        result1=[]
        for j in range(ncols):
            result1.append(table.cell(i, j).value)
        result.append(result1)

    pd_result=pd.DataFrame(result)
    pd_result.columns=pd_result.iloc[0,].tolist()
    pd_result=pd_result[1:].reset_index(drop=True)
    return pd_result

使用自定义函数:

代码语言:javascript
复制
read_xls_xcx(data_path,header=1)

相关解决方案:

之前写得解决另外一个问题的,直接调用Excel程序读取,应该也可以解决,因为本问题出现在需要直接自动化下载后直接打开入库,所以操纵Excel程序会影响主程序的执行,有兴趣的也可以瞅瞅,链接如下:

【1】https://blog.csdn.net/qq_35866846/article/details/102672342 【2】https://blog.csdn.net/qq_35866846/article/details/102775288

参考资料: Python读取excel,常用第三方库是xlrd,写入的是xlwt。 在读取excel的时候,代码如下:

代码语言:javascript
复制
```python
data = xlrd.open_workbook('data.xls')
table = data.sheets()[0]

nrows = table.nrows
ncols = table.ncols
```

参考链接: 【1】https://blog.csdn.net/HuangZhang_123/article/details/78717002 【2】https://www.cnblogs.com/zhang-jun-jie/p/9273721.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档