以下代码片段工作正常。它创建一个图表并将其类型设置为xlLine
chart = ws.Shapes.AddChart().Select()
xl.ActiveChart.ChartType = win32com.client.constants.xlLine
xl.ActiveChart.SetSourceData(Source=ws.Range(range))
但是,如果我运行此代码
chart = ws.Shapes.AddChart().Select()
xl.ActiveChart.ChartType = win32com.client.constants.xlColumn
xl.ActiveChart.SetSourceData(Source=ws.Range(range))
我收到以下错误
Traceback (most recent call last):
File "C:\Users\Simon\workspace\python\pyexcelchart\pyexcelchart.py", line 52, in <module>
excelChart(workbook=wbk,worksheet="Sheet1",range="A1:B6")
File "C:\Users\Simon\workspace\python\pyexcelchart\pyexcelchart.py", line 46, in excelChart
xl.ActiveChart.ChartType = win32com.client.constants.xlColumn
File "C:\WinPython-32bit-2.7.3.3\python-2.7.3\lib\site-packages\win32com\client\__init__.py", line 512, in __setattr__
d.__setattr__(attr, value)
File "C:\WinPython-32bit-2.7.3.3\python-2.7.3\lib\site-packages\win32com\client\__init__.py", line 474, in __setattr__
self._oleobj_.Invoke(*(args + (value,) + defArgs))
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147467259), None)
我已经运行了makepy.py并生成了Excel COM常量,但即使我使用ChartType = 3这样的数字类型,我也得到了同样的错误。如果我设置ChartType = 4(这是行),它就可以正常工作。
我注意到如果我将ChartType xlColumn设置为xlRandomText,我会得到一个干净的AttributeError:xlRandomText。所以看起来python与xlColumn一样好,但是除了xlLine之外,其他任何东西都有自动化excel的问题。我想知道这是否是python / Excel 2010问题?顺便说一句,我使用的是python 2.7和Excel 2010
答案 0 :(得分:3)
我不知道为什么但是xlColumn在这里没有列为可用的图表类型: http://msdn.microsoft.com/en-us/library/office/bb241008(v=office.12).aspx
但是,这可能适合您:
xl.ActiveChart.Type = win32com.client.constants.xlColumn