如何在工作簿中定位图表
我正在使用python2.7,并且用的是openpyxl版本1.8.6。我可以顺利生成一个图表,但找不到任何说明,告诉我如何把这个图表放到工作表的特定位置。希望能得到一些帮助。
我使用以下代码来生成图表:
ws = wb2.get_sheet_by_name('Traffic Data')
rowcount = ws.get_highest_row()
values = Reference(ws,(1,1), (rowcount - 1,1))
labels = Reference(ws,(0,1),(rowcount,0))
title = "Events recorded in " + str(datetime.datetime.strptime(str(runmonth), '%m').strftime('%B'))
series = Series(values, title=title)
chart.add_series(series)
ws = wb2.get_sheet_by_name('Traffic Incidents')
ws.add_chart(chart)
3 个回答
-1
在Excel中设置任何对象的位置其实非常困难,因为它使用了一种非常奇怪的单元格宽度系统:这些宽度是基于特定字体和字号中几个字符的宽度,再加上一些边距。而图表的位置则是用像素来设置的。我们在工作表中有一个point_pos()
的方法,但我不太信任它。我们刚刚发布了2.0版本,代码更简洁了。基本上,你可以通过调整chart.drawing
的属性来把图表放到你想要的位置,并设置合适的大小。
想了解更多信息,可以查看charts/chart.py中的代码。下一个版本应该会更好用一些。
1
我通过使用 chart.drawing 来调整图表的位置。具体来说,我用了:
chart.drawing.left = 1000
这样一来,图表就向右移动了大约 11 个单元格。我不太确定像素和单元格之间的对应关系,但通过几次尝试就能很容易找出来。
1
根据源代码,在使用add_chart()
方法将图表添加到工作表时,无法精确设置图表的位置。
可以考虑切换到xlsxwriter
模块。以下是来自处理图表的引用:
# Create a new chart object.
chart = workbook.add_chart({'type': 'line'})
# Add a series to the chart.
chart.add_series({'values': '=Sheet1!$A$1:$A$6'})
# Insert the chart into the worksheet.
worksheet.insert_chart('C1', chart)