从Python win32com更改Excel中的图表大小

时间:2016-12-29 19:26:23

标签: python excel charts size win32com

我尝试使用win32com和Python在Excel电子表格中更改图表的大小。下面的代码采用已填充数据的Excel文件,并添加了我想要调整大小的图表。有关代码的任何想法添加\ modify以更改图表的大小?谢谢!

import win32com.client as win32
xl = win32.DispatchEx('Excel.Application')
wb = xl.Workbooks.Open('C:/newfolder/example.xlsx')
ws = wb.Worksheets('Sheet1').Select()
ws = xl.ActiveSheet
ch = ws.Shapes.AddChart().Select()
xl.ActiveChart.ChartType = c.xlXYScatterLines
xl.ActiveChart.SetSourceData(Source = ws.Range(a+':'+b),PlotBy =2)
xl.ActiveChart.HasTitle = True
xl.ActiveChart.ChartTitle.Text = 'Chart of Capabilities'
xl.ActiveChart.ChartTitle.Font.Size = 14
.
.
.
{changing various chart attriutes}
.
.
.

2 个答案:

答案 0 :(得分:0)

Yous应该尝试openpyxl

import openpyxl
chartwb = openpyxl.Workbook()
sheet = chartwb.get_active_sheet()
referenceobj = openpyxl.charts.Reference(sheet, (1, 1), (10, 1))
serObj = openpyxl.charts.Series(referenceObj, title='Chart Series')
chartObject = openpyxl.charts.BarChart()
chartObject.append(serObj)
chartObject.drawing.top = 50 
chartObject.drawing.left = 100
chartObject.drawing.width = 300 
chartObject.drawing.height = 200
sheet.add_chart(chartObject)
chartwb.save('example.xlsx')

您还可以指定创建时的尺寸expression.AddChart(类型,左侧,顶部,宽度,高度)。

答案 1 :(得分:0)

根据interop docs,您应该拨打AddChart2而不是AddChart。前者采用左,上,宽,高的参数并返回Shape。如果您以后需要调整图表大小,则应该能够在形状上设置Left等。如果您需要检索特定图表,请使用ChartObjects(index)的{​​{1}}属性,这将获得ChartObject。从文档中可以清楚地了解WorksheetShape之间的关系(如果有的话)。