使用 XlsxWriter 在 python 3.5 中创建图表,其中系列值基于循环

Creating a chart in python 3.5 using XlsxWriter where series values are based on a loop

我在 Windows 10 上使用 Python 3.5。希望我能清楚地说明我想要完成的工作,同时尽可能减少混淆...

我编写了一个 Python 脚本来执行多项任务,其中一些任务包括根据脚本前面部分的代码生成的数据,通过 XlsxWriter 创建一个 Excel 工作簿。我试图让我的脚本也创建一个图表,再次使用 XlsxWriter,基于这些数据。我在网上看到了几个示例,虽然这些示例很有用,但这些示例与我自己的个人代码之间存在一个具体差异,这让我不确定如何继续。

我的问题出现在尝试向图表添加系列时。配置系列时,我遇到的几个例子包括这样的东西(注意:我实际上并没有使用这个确切的代码):

chart.add_series({
'name': '=Sheet1!$A:$A '
})

由于我的脚本的性质涉及循环和可变长度,生成的数据可能会填充到不同的列和行中,因此我无法分配 'name' 之类的固定引用,例如 'Sheet1!$A:$A' 因为虽然从我的脚本生成的所有数据都将存在于同一个 sheet 上,但它永远不会始终只在列 'A' 中并且只在单元格 2 到 7 之间。

那么,我该如何解决这个问题?同样,由于可变项目等,我告诉 XlsxWriter 填充单元格的方式是创建变量 row_1 = 0col_1 = 0 并根据需要递增它们。我可以写类似

的东西
chart.add_series({
'name': '=Sheet1!row:col+7'
})

通过 XlsxWriter?

编辑:所以我刚刚发现我可以使用替代索引,这似乎是我向图表添加系列的解决方法。但是,我收到以下错误消息:

UserWarning: Must specify 'values' in add_series()
warn("Must specify 'values' in add_series()")

基于这段代码:

chart.add_series({
'Subscribers': ['Sheet1', row_1 + 2, col_1, 
               2 + len(sb_subCount_list_clean), col_1] 
})

这是因为我使用变量作为索引吗? sb_subCount_list_clean 是一个列表,其中包含我用来创建图表的数据。该列的长度将是这个长度加 2,因为我有一些 headers 占据了前两个单元格。

在 XlsxWriter API 的几乎所有部分中,只要有像 A1 这样的单元格引用或像 =Sheet1!$A 这样的范围,您就可以使用元组或值列表。对于图表,您可以使用这样的值列表:

# String interface. This is good for static ranges.
chart.add_series({
    'name':       '=Sheet1!$A',
    'categories': '=Sheet1!$B:$B',
    'values':     '=Sheet1!$C:$C',
})

# Or using a list of values instead of name/category/value formulas:
#     [sheetname, first_row, first_col, last_row, last_col]
# This is better for generating programmatically.
chart.add_series({
    'name':       ['Sheet1', 0, 0      ],
    'categories': ['Sheet1', 0, 1, 4, 1],
    'values':     ['Sheet1', 0, 2, 4, 2],
})

参考docs.

至于你得到的错误(编辑后):Subscribers 不是 XlsxWriter 参数,你可能是说 values:

 chart.add_series({
      'values': ['Sheet1', row_1 + 2, col_1, 
                 2 + len(sb_subCount_list_clean), col_1] 
 })