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

如何用XlsxWriter实现图表数据行的动态配置?

动态设置XlsxWriter图表的数据源范围

嘿,这个需求太常见了,硬编码行数确实很麻烦,尤其是数据量变化的时候。其实只需要用Python的字符串拼接功能,就能轻松实现动态的数据源范围,下面给你两种实用的方法:

方法一:使用f-string(推荐,Python 3.6+)

首先你需要先获取实际的数据总行数,比如从你的数据列表、DataFrame或者其他数据源里拿到这个数值,存到row_count变量里。然后用f-string直接把行数插入到范围字符串中:

# 先获取实际的行数,这里示例用30,你替换成自己的逻辑,比如len(data_list)+1之类的
row_count = 30

# 动态生成数据源范围
values_range = f'=Depart!$D$2:$D${row_count}'

# 然后正常添加图表系列
chart.add_series({
    'name': 'SNR of old AP',
    'values': values_range,
    'marker': {'type': 'circle'},
    'data_labels': {'value': True,'num_format':'#,##0'},
})

方法二:使用字符串格式化(兼容旧Python版本)

如果你的项目还在使用Python 3.5及以下版本,可以用str.format()来实现同样的效果:

row_count = 30
values_range = '=Depart!$D$2:$D${}'.format(row_count)

# 图表系列代码和上面一致
chart.add_series({
    'name': 'SNR of old AP',
    'values': values_range,
    'marker': {'type': 'circle'},
    'data_labels': {'value': True,'num_format':'#,##0'},
})

额外小提示

如果你是用Pandas的DataFrame来写入数据的,可以直接从DataFrame的属性里获取行数,比如:

import pandas as pd

df = pd.read_excel('your_source_data.xlsx')
# 因为表头在第1行,数据从第2行开始,所以结束行是1(表头行) + 数据行数
row_count = 1 + len(df)
values_range = f'=Depart!$D$2:$D${row_count}'

另外要注意哦,row_count的值至少要大于等于2,不然生成的范围(比如$D$2:$D$1)是无效的,会导致图表显示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:13:06