如何在工作簿中定位图表

我正在运行python2.7,并使用openpyxl 1.8.6版本。 我能够生成一个图表很好,但无法find任何指示图表可以放在表格中的特定位置的任何东西。 任何援助将不胜感激。

我正在使用下面的代码来生成图表:

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) 

根据源代码 ,使用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) 

在Excel中设置任何对象的位置实际上是非常困难的,因为它使用一个荒谬愚蠢的单元格宽度的系统:这些系统是基于特定字体和大小的字符的宽度加上一些填充。 另一方面图表必须使用像素进行定位。 我们在工作表中有point_pos()方法,但我不相信它。 我们刚刚发布2.0版本,其代码更清晰。 基本上你可以玩chart.drawing属性来获得它在你需要在什么大小的地方。

请查看charts / chart.py中的代码以获取更多信息。 下一个版本应该更舒适一些。

我能用chart.drawing来抵消图表的位置。 具体来说,我用了:

chart.drawing.left = 1000

这抵消了约11个单元的图表。 我不确定像素到像元的映射,但它可以很容易通过一些试验逆向工程。