1

我的以下代码片段可以正常工作。它创建一个图表并将其类型设置为 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

4

1 回答 1

3

我不知道为什么,但 xlColumn 未在此处列为可用图表类型:http: //msdn.microsoft.com/en-us/library/office/bb241008 (v=office.12).aspx

但是,这可能对您有用:

xl.ActiveChart.Type = win32com.client.constants.xlColumn
于 2013-05-14T22:28:31.727 回答