2017-06-08 57 views
0

用Python win32com如何获得对图表数据表的引用?用Python win32com如何获取图表数据表的引用?

我可以创建的数据表的图表(PowerPoint中弹出它在一个单独的窗口) 像:

import win32com 
    from MSO import constants as msoconst 

    Application = win32com.client.Dispatch("PowerPoint.Application") 
    Application.Visible = True 
    Presentation = Application.Presentations.Add() 

    FirstSlide = Presentation.Slides.Add(1, 12) 

... no problem adding slides, shapes and text and setting font size and color .... 

    InventoryChart = FirstSlide.Shapes.AddChart2(201,msoconst.xlColumnClustered ,10,80,470,220,False) # 0 = Clustered Column, 1 = Combo Area, 2 = Clustered Column 
    InventoryChartData = InventoryChart.ChartData 

ChartData不起作用:AttributeError的:“”对象没有属性“ChartData”

那么,如何获得PowerPoint创建的表的引用?或者,如何定义要用于我的数据的表格?

回答

1

我有同样的问题,而且花了很多时间试图找到答案。

ChartData是Chart对象的属性。因此,要访问ChartData对象,您需要告诉PowerPoint您刚刚添加的图形是一个图表。

这里有两种方法可以做到这一点。

# Option 1 - Add .Chart to end of AddChart2 method 
InventoryChart = FirstSlide.Shapes.AddChart2(201,msoconst.xlColumnClustered,10,80,470,220,False).Chart 

# Option 2 - Define Chart object separate from AddChart2 
InventoryChart = FirstSlide.Shapes(1).Chart 

# You can now access the chart's data worksheet 
InventoryChartData = InventoryChart.ChartData.Workbook.Worksheets(1) 

# Write a value to worksheet 
InventoryChartData.Range('F1').Value = 150 

# Apply numeric formatting to Series 1 values 
InventoryChartData.Range('B2:B5').NumberFormat = '0.00' 
相关问题