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

如何解决openpyxl生成的折线图在Excel中每行单独成系列的问题

解决openpyxl生成折线图在MS Excel中多系列显示的问题

你的问题出在openpyxl添加数据时的数据方向设置上:默认情况下,add_data方法会按行识别数据系列,导致Excel把每一行都当成单独系列,而Numbers做了自动适配所以显示正常。只要修改add_data的参数,指定按列读取数据就能解决。

修改后的完整可运行代码如下:

from datetime import date
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference

wb = Workbook()
ws = wb.active

rows = [
    ['Date', 'Force'],
    [date(2015,9, 1), 4],
    [date(2015,9, 2), 9],
    [date(2015,9, 3), 11]
]

for row in rows:
    ws.append(row) # 逐行写入工作表数据

chart = LineChart()
chart.title = "Force Measurements"
chart.y_axis.title = "Force (LBS)"
chart.x_axis.title = "Date"

# 选中Force列的所有数据(含标题)
data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=4) 
# 关键修改:添加from_rows=False,指定按列生成单个数据系列
chart.add_data(data, titles_from_data=True, from_rows=False)

# 补充:将日期列设置为X轴分类数据,让图表正确关联日期
cats = Reference(ws, min_col=1, min_row=2, max_row=4)
chart.set_categories(cats)

ws.add_chart(chart, "D5")
wb.save("force_measurements.xlsx")

核心修改说明:

  1. from_rows=False:默认参数为True,会把选中区域的每行数据拆成单独系列;设置为False后,openpyxl会把整列数据作为一个系列,正好符合你的需求。
  2. chart.set_categories(cats):这一步将日期列绑定为X轴的分类数据,避免Excel把X轴显示为默认的序列编号,让图表逻辑更完整。

修改后在MS Excel中打开,图表会只显示一个名为"Force"的折线系列,和Numbers中的显示效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:15:54