changing axis labels in excel 2007 charts using python win32com

和自甴很熟 提交于 2020-01-05 05:02:46

问题


I have an excel sheet with some data in first two columns. I created a simple chart with this data. I am facing problem in adding axis labels to the chart.

here is my script

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()

-------up to this everything fine.

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

but when I add the axis labels, it returns with an attribute error xlCategory.

how can I add the axis labels and change the font size.

Thanks in advance.


回答1:


You probably used the wrong enum axis type. Each enum (as far as I can tell) only works for certain types of charts. According to the built-in macro recorder (very useful even for python-based scripts, btw), scatter plots use xlValue, not xlCategory. Try one of the other enums until your code works.

I haven't fully figured out Excel in win32com yet, but I managed to get axis titles to appear after a bit of trial and error. Here's a short snippet from some code I wrote for an XY scatter plot with titles for X axis, Y axis, and Y2 axis:

    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)"


来源:https://stackoverflow.com/questions/17166351/changing-axis-labels-in-excel-2007-charts-using-python-win32com

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!