使用Pandas读取xlsm文件遇格式兼容错误,求解决方案
解决Pandas读取XLSM文件的警告与TypeError问题
方法1:换用xlrd引擎读取XLSM(适配宏文件)
- 先安装xlrd旧版本(xlrd2.0+不再支持xls/x以外的格式):
pip install xlrd==1.2.0 - 用xlrd引擎读取文件:
该方法可避开openpyxl对宏文件扩展的支持限制,直接读取数据,不会触发原有的扩展警告。import pandas as pd df = pd.read_excel("data.xlsm", engine='xlrd', sheet_name="sheet1")
方法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
相关产品推荐
相关产品推荐

