用于Openpyxl图表位置的循环

我正在尝试做一个for循环遍历图表名称和位置列表,以便于使用openpyxl将图表添加到excel中。 这是我到目前为止所尝试的。

from openpyxl import Workbook from openpyxl.chart import BarChart, Reference, Series def trysomething(): letterlist=['B', 'J', 'R', 'Z'] numlist=[22, 38, 54, 70] position=[] for k in letterlist: for l in numlist: pos = k+str(l) position.append(pos) chartlist=['chart'] chartnum=[] for j in range(1,6): chartnum.append(j) cha=[] for h in chartlist: for s in chartnum: ch=h+str(s) cha.append(ch) wb = Workbook() ws = wb.active for i in range(10): ws.append([i]) values1 = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10) chart1 = BarChart() chart1.add_data(values1) values2 = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10) chart2 = BarChart() chart2.add_data(values2) values3 = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10) chart3 = BarChart() chart3.add_data(values3) values4 = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10) chart4 = BarChart() chart4.add_data(values4) values5 = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10) chart5 = BarChart() chart5.add_data(values5) for a, b in zip(iter(cha), iter(position)): print(a,b) ws.add_chart(str(a), str(b)) wb.save("SampleChart.xlsx") trysomething() 

当我打印(a,b)时,它会输出正确的图表位置,但是,我无法添加图表。

任何帮助表示赞赏!

Workbook().active.add_chart()需要一个Chart对象和一个string单元格位置。 在打印值(图表,图表位置)时,您应该会看到Chart <class 'openpyxl.chart.bar_chart.BarChart'>和一个'string'的实例,但是您会看到ab都是<str> (string)对象,所以你的代码传递两个string对象到.add_chart() ,没有Chart

你会想要做一些像创build一个chart_list并遍历它:

 charts_list = [chart1, chart2, chart3, chart4, chart5] for a, b in zip(iter(charts_list), iter(position)): # print(type(a)) # <class 'openpyxl.chart.bar_chart.BarChart'> # print(type(b)) # <type 'str'> ws.add_chart(a, b) 

查看创build的Excel文件应该类似于以下5个图表。

希望这可以帮助。

在这里输入图像说明