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

使用openpyxl绘制Excel图表:日期X轴显示异常如何修复

修复openpyxl折线图日期X轴显示异常的问题

核心问题根源

直接给图表的x_axis赋值DateAxis()会破坏原图表与数据源的绑定关系,引发异常;而不做配置时,openpyxl默认将X轴识别为普通数值序列,因此显示成1、2、3...的序号而非日期。

正确实现步骤

  1. 确保日期数据格式合规
    写入Excel的日期必须是Python的datetime对象,而非字符串,同时保证Excel单元格格式为日期类型:

    from datetime import datetime
    # 示例:向P列写入日期数据
    ws['P1'] = "日期"
    ws['P2'] = datetime(2024, 1, 1)
    ws['P3'] = datetime(2024, 1, 2)
    # 按需填充后续日期数据
    
  2. 正确创建图表并绑定数据源
    用Reference对象明确指定X轴(P列)和Y轴(17-23列,对应Q到V列)的数据源范围,再关联到折线图:

    from openpyxl import Workbook
    from openpyxl.chart import LineChart, Reference
    
    wb = Workbook()
    ws = wb.active
    # 假设已完成P列(日期)和Q-V列(数值)的数据填充
    
    # 初始化折线图
    c2 = LineChart()
    c2.title = "日期趋势折线图"
    c2.y_axis.title = "数值"
    c2.x_axis.title = "日期"
    c2.style = 13
    
    # 定义Y轴数据范围(Q2到V100,根据实际行数调整)
    y_data = Reference(ws, min_col=17, max_col=23, min_row=2, max_row=100)
    # 定义X轴日期数据范围(P2到P100)
    x_data = Reference(ws, min_col=16, max_col=16, min_row=2, max_row=100)
    
    # 添加Y轴数据,并关联X轴数据源
    c2.add_data(y_data, titles_from_data=True)
    c2.set_categories(x_data)  # 关键操作:将X轴绑定到日期列
    
  3. 配置X轴为日期类型
    不要直接替换x_axis,而是修改现有轴的属性来设置日期类型:

    # 将X轴设置为日期轴类型
    c2.x_axis.axis_type = "date"
    # 设置日期显示格式,可按需调整,比如"yyyy/mm/dd"
    c2.x_axis.number_format = "yyyy-mm-dd"
    # 可选:调整刻度间隔,比如每7天显示一个刻度
    c2.x_axis.majorUnit = 7
    c2.x_axis.majorTimeUnit = "days"
    
  4. 插入图表并保存文件

    ws.add_chart(c2, "X1")  # 将图表插入到工作表X1位置
    wb.save("date_trend_chart.xlsx")
    

常见错误规避

  • 禁止直接执行c2.x_axis = DateAxis(),此操作会生成未关联数据源的新轴,导致图表异常。
  • 必须通过set_categories()绑定X轴的日期数据源,否则openpyxl无法识别日期序列。
  • 日期数据必须是datetime对象,不能是字符串,否则即使配置轴类型,Excel仍可能将其识别为文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:33:10