You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Pandas read_excel/ExcelFile导入Excel触发AttributeError求助

解决Pandas读取Excel时出现的AttributeError: 'Book' object has no attribute 'extract_formulas'

你遇到的问题核心是Pandas与xlrd版本不兼容,和Python 3.6/3.7的版本差异没有直接关系,本质是两个环境里安装的依赖包版本组合不一致。

错误原因分析

这个报错是因为你的Python 3.6环境中,xlrd的版本和Pandas版本不匹配:旧版本的Pandas会调用xlrd Book对象的extract_formulas属性,但新版xlrd(比如2.x及以上)已经移除了这个属性;反过来如果xlrd版本过旧,而Pandas版本相对较新,也可能出现属性不匹配的情况。虚拟机的Python 3.7环境刚好安装了兼容的版本组合,所以没触发错误。

具体解决方案

试试下面的步骤修复:

  1. 检查当前环境的包版本
    在命令行运行以下命令,查看Pandas和xlrd的版本:

    # Windows系统
    pip list | findstr pandas
    pip list | findstr xlrd
    
    # 类Unix系统
    pip list | grep pandas
    pip list | grep xlrd
    
  2. 安装兼容的xlrd版本
    最稳妥的方式是安装xlrd 1.2.0版本(这个版本和大多数支持Python 3.6的Pandas版本兼容):

    pip uninstall xlrd -y
    pip install xlrd==1.2.0
    
  3. 替代方案:用openpyxl读取xlsx文件
    如果你要读取的是.xlsx格式文件,也可以改用openpyxl作为引擎,绕开xlrd的版本问题:
    先安装openpyxl:

    pip install openpyxl
    

    然后修改代码指定引擎参数:

    headers = pd.ExcelFile(r"\\sfcfile-2\DataModule\IL\leasing.contract.extract.new headers.xlsx", engine='openpyxl')
    

为什么虚拟机没问题?

虚拟机的Python 3.7环境中,Pandas和xlrd的版本组合是兼容的——比如虚拟机里安装的xlrd是1.x版本,或者Pandas版本适配了xlrd的API变化,所以没有触发这个属性错误。

内容的提问来源于stack exchange,提问作者NateO

火山引擎 最新活动