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

openpyxl加载xlsm文件报NumericAxis错误,如何仅加载指定无图表工作表

解决方案

该报错是openpyxl解析非标准格式图表轴时触发的已知问题,只要规避图表解析流程即可解决,可选方案如下:

  • 方案1:关闭图表加载功能(最便捷)
    openpyxl加载文件时默认会解析所有工作表内的图表对象,如果你不需要使用图表相关功能,直接添加keep_charts=False参数即可跳过所有图表的解析流程,完全避免该类型错误,修改后的代码如下:
import openpyxl

wb = openpyxl.load_workbook('test.xlsm', data_only=True, keep_charts=False)
sheets = wb.sheetnames
x = wb[sheets[0]]
  • 方案2:仅加载指定工作表(符合规避全量加载的需求)
    3.0.7及以上版本的openpyxl支持通过sheet_name参数指定需要加载的工作表,其余工作表不会被解析,自然不会触发其他工作表内图表的报错,示例代码如下:
import openpyxl

# 仅加载索引为0的第一个工作表,也可传入工作表名称字符串指定加载
wb = openpyxl.load_workbook('test.xlsm', data_only=True, sheet_name=0)
# 仅加载了一个工作表,直接取active即可
x = wb.active

如果运行报错说明你的openpyxl版本过低,执行命令pip install -U openpyxl升级到最新版本即可。

  • 方案3:换用其他库适配场景
    如果以上方案都不生效,可以根据你的使用场景更换处理库:
    • 仅需要读取单元格数据:使用pandas的read_excel方法指定对应sheet即可,不会解析无关内容,示例代码:
    import pandas as pd
    df = pd.read_excel('test.xlsm', sheet_name=0, engine='openpyxl')
    
    • 需要读写Excel且运行环境安装了Office客户端:使用pywin32(Windows)或appscript(macOS)调用本地Excel程序操作,完全兼容所有xlsm格式特性,Windows下示例代码:
    import win32com.client as win32
    
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    excel.Visible = False
    wb = excel.Workbooks.Open(r'文件的绝对路径\test.xlsm')
    x = wb.Sheets(1)
    # 后续处理逻辑
    wb.Close(SaveChanges=False)
    excel.Quit()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:09:01