2013-05-01 120 views
3

我正在使用Python来自动化一些Excel数据分析。我有大部分的基础知识,但我似乎无法找到任何方式成功调用SetSourceDataSeriesCollection。我读过this post(和所有其他人),并发现它有希望,但它似乎不符合我的经验。我在Windows机器上使用Python 2.7.3,32位。Python和win32com.client似乎缺少方法,特别是SetSourceData

有没有人成功使用过SetSourceDataSeriesCollection

下面是我使用的代码的简化版本,并错误:

chart = chartSheet.ChartObjects(1) 

chart.SetSourceData(chartSheet.Range("A1:B2"),PlotBy=2) 

我指定PlotBy因为this,但我怀疑它的事项

和错误:

raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr)) 

AttributeError: '<win32com.gen_py.Microsoft Excel 14.0 Object Library.ChartObject instance at 0x68557120>' object has no attribute 'SetSourceData' 

ARGH。我应该看看IronPython吗? (我发现,在MSDN文档中的规定,但似乎并没有在Python工作的一些其他的东西......但现在不记得他们。)

+0

'win32com'是伟大的,但[蟒蛇的Excel(http://www.python-excel.org/)模块可能使生活对你.. – danodonovan 2013-05-01 10:03:02

+0

事实上,我同时使用。尽我所能,我使用Python excel模块,但我的主要目标之一是创建一个Excel程序对象(即图表和表格)的“纸质轨迹”,当程序下载时,非程序员可以查看和编辑它短。 – 2013-05-03 05:09:53

回答

1

此行

chart = chartSheet.ChartObjects(1) 

实际上并不返回一个Chart对象(quote

This method is not equivalent to the Charts property. This method returns embedded charts; the Charts property returns chart sheets. Use the Chart property to return the Chart object for an embedded chart.

我没有试过,但它听起来好像你需要引用chart属性,也许是这样的:

chartObject = chartSheet.ChartObjects(1) 
chart = chartObject.chart 
+0

ACK!谢谢!这确实做到了。 – 2013-05-01 10:09:40