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

2023-10-31

报错信息:

 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行代码,代码如下:

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 中的三行代码
四)定义新的读取函数

#自定义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

使用自定义函数:

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的时候,代码如下:

```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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 投影矩阵的推导(OpenGl)

    概述 计算机显示器是一个2D平面 OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上 GL PROJECTION矩阵用于该投影变换 首先 它将所有定点数据从观察坐标转换到裁减坐标 接着 这些裁减坐标通过除以w分量的方式转换到归一
  • 一个 Nginx 如何实现部署多个不同的项目

    文章目录 nginx conf 配置文件 创建静态文件目录 效果 在 linux 中实现一个 nginx 部署2个不同的端口号访问不同的项目 nginx conf 配置文件 我们可以通过配置两个 server 来实现在一个 nginx 服务
  • 2020年十二月ccf-csp认证总结(内附个人题解)

    吐槽一下这个在线评测功能 平均四十分钟才能看到提交结果 本次成绩为100 100 0 30 20 最后两道题都是骗的分 提醒自己附代码的神奇图片 希望寒假有时间把没做出来的题目也再做一遍 csp官网更新出题目后 有路过的可以提醒我把题目加上
  • IMX6学习记录(15)-ffmpeg移植

    上面是我的微信和QQ群 欢迎新朋友的加入 1 获取源码 下载ffmpeg http ffmpeg org 下载libx264 http www videolan org developers x264 html 有git链接 用git拉算了
  • linux下mariadb的服务启动异常,centos7 – CentOS 7 MariaDB错误“无法启动mariadb.service:找不到单位.”...

    我对 Linux有点新手 在Windows上的Virtualbox中测试各种LAMP设置 目前我有一台Centos 7 VM 我正在尝试安装MariaDB 我在这里遵循指示 http www tecmint com install lamp
  • OpenTsdb官方文档----日期和时间

    查询数据时 OpenTSDB支持许多日期和时间格式 在通过GUI CliQuery工具或HTTP API提交的查询中支持以下格式 每个查询都需要一个开始时间和一个可选结束时间 如果未指定结束时间 则将使用运行TSD的系统上的当前时间 相对的
  • 战舰世界选服务器删除什么文件夹,《战舰世界》常见问题解决方案合集

    虚拟内存导致的无前提闪退 表现为 1 无弹出窗口 2 闪退后桌面分辨率会突然变大然后变正常 问题常出现于 win7 win8 1 win10 x86框架下的32位系统 解决方法 修改虚拟内存为系统实际物理内存的1 5倍 例如我是win10
  • [Win11] PowerShell无法激活Conda虚拟环境

    目录 一 问题背景 二 解决方案 一 问题背景 按照教程1安装Typora时 需使用PowerShell执行Python命令 然而 Win11 PowerShell无法激活Conda虚拟环境 报错如下图所示 二 解决方案 根据报错 发现无法
  • Vue.js实战读书笔记--计算属性

    计算属性 3 1 什么是计算属性 在双方绑定过程中如果有过长的数据 表达式或者复杂逻辑业务时 应将所有的计算属性都以函数的形式写在Vue实例的computed选项内 最终返回计算后的结果 举例 改写前 div text split reve
  • ESP32-C3系列模组简介

    ESP32 C3是一款安全稳定 低功耗 低成本的物联网芯片 搭载RISC V 32位单核处理器 为物联网产品提供行业领先的射频性能 完善的安全机制和丰富的内存资源 嵌入式智能终端 无线WIFI技术以及Internet的广泛应用必将使家居控制
  • [Python系列-15]:人工智能 - 数学基础 -5- 向量内积(点乘)和外积(叉乘)概念及几何意义

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119322764 TBD ht
  • 听我一句劝,千万别去外包,两年外包生涯做完,感觉自己废了一半....

    先说一下自己的情况 大专生 18年通过校招进入湖南某软件公司 干了接近5年的点点点 今年年上旬 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了五年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 基础爬虫记~豆瓣+东方财富网爬虫

    基础小白 大佬轻点喷 一 基础豆瓣爬虫 1 首先在某站上听讲解 简单建立起了对爬虫的基础框架 具体包括五个板块 当然 有些东西看个人 可写成函数 也可以直接写 但重复用到的东西建议写函数 用到了下面五个库 from bs4 import B
  • 第五周:基于PIL的Python图像处理

    安装PIL注意 不是pip install Python Image Library 而是Pip install pillow pip算是PIL的一个分支 借助它我们可以完成 图像基本操作 缩放 裁剪 旋转 色彩转换 1 引用PIL fro
  • Linux Ubuntu 20.04LTS安装OpenSSL步骤

    其实 Ubuntu 20 04LTS 系统自带 OpenSSL 的 但是这个自带的openssl是没有 lt 头文件 h gt 和 lt 动态库文件 so及静态库文件 a gt 对于开发人员编程来说用不了 编译就报错找不到头文件 接口未定义
  • sqli-labs————less 23(高级注入篇)

    前言 从这一关开始 我们进进入了短暂的高级注入部分 这一部分中将会陆续介绍一些更为巧妙的注入技巧 Less 23 查看一下源代码
  • VS2013及QT安装

    参考如下链接 QT下载 QT下载 VS2013及QT安装 https jingyan baidu com article e8cdb32b132cd637052bade4 html
  • egg.js + mysql + windows 踩坑全纪录

    资料 egg js文档 https www eggjs org zh CN intro quickstart 背景 前面的都很简单 按照官方文档配置即可 全部调通以后 开始接触数据库mysql 因为米有后台开发背景 所以需要从头开始 步骤
  • Error:java: 无法从静态上下文中引用非静态 变量 this

    Error java 无法从静态上下文中引用非静态 变量 this 分析 出现这种错误首先先分清什么是静态什么是非静态 它们之间的关系是什么 静态方法中不能引用非静态变量 非静态方法中能引用静态变量 错误原因代码如下 public clas
  • 关于pd.read_excel()读取xls文件报错的解决办法

    报错信息 File E Python lib site packages xlrd compdoc py line 426 in locate stream raise CompDocError s corruption seen d d