使用python win32com在excel 2007图表中更改轴标签

时间:2013-06-18 10:17:49

标签: python charts excel-2007 python-2.6 win32com

我有一张excel表,前两列有一些数据。我用这些数据创建了一个简单的图表。我在向图表添加轴标签时遇到问题。

这是我的脚本

from win32com.client import Dispatch, constants
excel = win32com.client.Dispatch('Excel.Application')
wb = excel.Workbooks.Open( 'output_data.xls', False, True)
excel.Visible = False
ws1 = wb.Worksheets('sheet_1)
ch = ws1.Shapes.AddChart( 73, 200, 50, 800, 500).Select()
excel.ActiveChart.ApplyLayout(1)
excel.ActiveChart.SetSourceData(Source=ws1.Range("$A:$B"))
excel.ActiveChart.ChartTitle.Text = "Integral"
excel.ActiveChart.Legend.Delete()

-------一切都很好。

excel.ActiveChart.axes(constants.xlCategory).AxisTitle.Caption = "Z_coordinate" 

但是当我添加轴标签时,它返回属性错误xlCategory。

如何添加轴标签并更改字体大小。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可能使用了错误的枚举轴类型。每个枚举(据我所知)仅适用于某些类型的图表。根据内置的宏录制器(即使对于基于python的脚本非常有用,顺便说一句),散点图使用xlValue,而不是xlCategory。试试one of the other enums until your code works

我还没有完全弄清楚win32com中的Excel,但我设法在经过一些试验和错误之后出现了轴标题。这是我为XY散点图编写的一些代码的简短片段,其中包含X轴,Y轴和Y2轴的标题:

    Foo = chart.SeriesCollection(1)
    Bar = chart.SeriesCollection(2)

    Bar.AxisGroup = 2

    Primary_Axis = chart.Axes(AxisGroup=xlPrimary)

    Foo_xAxis = Primary_Axis(1)
    Foo_yAxis = Primary_Axis(2)
    Foo_xAxis .HasTitle = True
    Foo_yAxis .HasTitle = True

    Bar_yAxis = chart.Axes(xlValue, AxisGroup=xlSecondary)
    Bar_yAxis.HasTitle = True

    Foo_xAxis .AxisTitle.Text = "Primary X axis string"
    Foo_yAxis .AxisTitle.Text = "Primary Y axis string"
    Bar_yAxis.AxisTitle.Text = "Secondary Y axis string(Y2)"