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

如何用Openpyxl修改Excel图表系列名称且保留原列名?

解决Openpyxl修改折线图系列名称(不改动数据列)的问题

完全可以只修改图表系列名称而不改动数据列标题,你之前报错是因为操作方式不对:chart.series是系列对象的列表,不能直接访问chart.series.title,而且每个系列的title是一个对象,不能直接赋值字符串,需要修改其text属性。

具体操作步骤

  1. 准备好存储原始名称的列表(比如original_names),确保列表长度和图表的系列数量一致
  2. 遍历chart.series列表,逐个修改每个系列的标题文本

修改后的代码示例

from openpyxl.chart import LineChart, Reference
# 若需要显式创建Title对象可导入,多数情况直接修改text属性即可
# from openpyxl.chart.text import Title

x_values = Reference(sheet, min_col=1, min_row=2, max_col=1, max_row=sheet.max_row)
y_values = Reference(sheet, min_col=column_init, min_row=row_num, max_col=column_end, max_row=sheet.max_row)

# 创建图表
chart = LineChart()
chart.style = 12

chart.add_data(y_values, titles_from_data=True)
chart.set_categories(x_values)  # 注意你之前重复调用了set_categories,保留一个即可
chart.x_axis.number_format = 'hh:mm'
chart.x_axis.majorTimeUnit = "hours"
chart.x_axis.title = "Date"

# ------------------- 新增修改系列名称的代码 -------------------
# 替换为你的原始名称列表
original_names = ["原始系列名1", "原始系列名2", "原始系列名3"]

for idx, series in enumerate(chart.series):
    # 直接修改标题文本(推荐方式)
    series.title.text = original_names[idx]
    
    # 若上述方式报错,尝试重新赋值Title对象
    # series.title = Title(text=original_names[idx])
# -------------------------------------------------------------

graph_location = "E2"
sheet.add_chart(chart, graph_location)
book.save(excel_name)

关键说明

  • chart.series是图表所有系列的集合,每个元素对应一条折线的系列对象
  • 每个系列的title是Title类型对象,必须通过text属性修改显示名称,不能直接赋值字符串
  • 确保original_names的长度和len(chart.series)一致,避免索引越界

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:05:06