如何在工作簿中定位图表

3 投票
3 回答
3509 浏览
提问于 2025-04-18 06:20

我正在使用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)

撰写回答