我在Windows 10上使用Python 3.5。希望我能清楚地表达我想要完成的事情,同时尽量避免混淆......
我编写了一个执行多个任务的Python脚本,其中一些任务包括根据脚本前面部分代码生成的数据通过XlsxWriter创建Excel工作簿。我试图让我的脚本也创建一个图表,再次使用XlsxWriter,基于这些数据。我已经看过几个在线可用的例子,虽然有用,但是这些例子和我自己的个人代码之间有一个特定的区别,这使我不确定如何继续。
尝试将图表添加到图表时,我的问题出现了。在配置系列时,我遇到的几个例子包括这样的内容(注意:我实际上并没有使用这个确切的代码):
chart.add_series({
'name': '=Sheet1!$A$2:$A$7 '
})
由于我的脚本的性质涉及循环和可变长度,所生成的数据可以填充在各个列和行中,所以我不能像'name'那样分配像'Sheet1!$ A $ 2这样的固定引用。 :$ A $ 7'因为尽管我的脚本生成的所有数据都存在于同一张纸上,但它永远不会只在“A”列中,而只会在第2到7列之间。
那么,我该如何解决这个问题呢?同样,由于变量项等,我告诉XlsxWriter填充单元格的方法是创建变量row_1 = 0
和col_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,因为我有一些标头占据前两个单元格。
答案 0 :(得分:0)
在XlsxWriter API的几乎所有部分中,只要有像A1
这样的Cell引用或类似=Sheet1!$A$1
的范围,就可以使用元组或值列表。对于图表,您可以使用以下值列表:
# String interface. This is good for static ranges.
chart.add_series({
'name': '=Sheet1!$A$1',
'categories': '=Sheet1!$B$1:$B$5',
'values': '=Sheet1!$C$1:$C$5',
})
# 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]
})