You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas读取xlsm文件遇格式兼容错误,求解决方案

解决Pandas读取XLSM文件的警告与TypeError问题

方法1:换用xlrd引擎读取XLSM(适配宏文件)

  • 先安装xlrd旧版本(xlrd2.0+不再支持xls/x以外的格式):
    pip install xlrd==1.2.0
    
  • 用xlrd引擎读取文件:
    import pandas as pd
    df = pd.read_excel("data.xlsm", engine='xlrd', sheet_name="sheet1")
    
    该方法可避开openpyxl对宏文件扩展的支持限制,直接读取数据,不会触发原有的扩展警告。

方法2:用openpyxl直接读取后转DataFrame

若必须使用openpyxl,可绕过Pandas的read_excel,直接操作工作簿:

from openpyxl import load_workbook
import pandas as pd

# 只读模式加载,减少宏相关扩展处理
wb = load_workbook("data.xlsm", read_only=True, data_only=True)
ws = wb["sheet1"]
# 提取单元格值转为列表,再生成DataFrame
data = list(ws.values)
df = pd.DataFrame(data[1:], columns=data[0])
  • read_only=True提升大文件读取效率,同时降低对宏扩展的解析操作
  • data_only=True读取单元格计算结果而非公式,适合仅需数据的场景

方法3:修复转存XLSX后的TypeError(可选)

若转存XLSX后触发__init__()缺少必填参数'id',多因文件转存损坏或openpyxl版本兼容问题:

  • 升级openpyxl到最新稳定版:
    pip install --upgrade openpyxl
    
  • 手动用Excel重新转存:打开xlsm文件,选择「另存为」→「Excel工作簿(.xlsx)」,避免用第三方工具转存导致文件结构损坏

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:50:23