Python-Win32Com的额外Excel图表系列


问题内容

我正在为作业编写一些代码,并且需要在Excel中创建一个简单的柱形图。今天下午,我发现了win32com(顺便说一句令人惊奇的工具),但是我一直在遭受有关它的文档缺乏或找不到运气的困扰^^

我在玩图表,我想我已经做了想要的事,有一点例外:我编写的函数总是创建2个系列的列。

这就是我得到的:

xlBook = xlApp.Workbooks.Add()

xlSheet = xlBook.Sheets(1)
xlSheet.Name = "Algoritmos de Busqueda"
xlSheet.Cells(1,1).Value="Secuencial"
xlSheet.Cells(2,1).Value="Binaria"
xlSheet.Cells(1,2).Value="32"
xlSheet.Cells(2,2).Value="32"

chart = xlApp.Charts.Add()
chart.Name= "Grafico "+xlSheet.Name
series = chart.SeriesCollection().NewSeries()
valoresx=xlSheet.Range("A1:A2")
valoresy=xlSheet.Range("B1:B2")
series.XValues= valoresx
series.Values= valoresy
series.Name= "Algoritmos"
xAxis= chart.Axes()[0]
yAxis= chart.Axes()[1]
xAxis.HasMajorGridlines = True
yAxis.HasMajorGridlines = True

我在图表内创建了一个新系列,其中包含我需要的所有信息。但是,当我运行脚本时,最终得到一个带有4列的Excel图表,并带有相同的信息(成对出现)。我已经尽力了,但是我找不到在X轴上创建第二组值的东西…

非常感谢您的帮助^^谢谢!


问题答案:

通过观察在Excel中记录宏的行为,该宏执行与在Python中复制相同的操作,我们可以看到似乎不需要创建新的序列,例如

series = chart.SeriesCollection().NewSeries()

我可以简单地引用现有的系列

series = chart.SeriesCollection(1)

以下代码似乎在我的计算机上提供了所需的行为。

import win32com.client
xlApp = win32com.client.Dispatch('Excel.Application')

xlBook = xlApp.Workbooks.Add()

xlSheet = xlBook.Sheets(1)
xlSheet.Name = "Algoritmos de Busqueda"
xlSheet.Cells(1,1).Value="Secuencial"
xlSheet.Cells(2,1).Value="Binaria"
xlSheet.Cells(1,2).Value="32"
xlSheet.Cells(2,2).Value="32"

chart = xlApp.Charts.Add()
chart.Name= "Grafico "+xlSheet.Name
series = chart.SeriesCollection(1)
series.XValues= xlSheet.Range("A1:A2")
series.Values= xlSheet.Range("B1:B2")
series.Name= "Algoritmos"
chart.Axes()[0].HasMajorGridlines = True

这已被简化到最低限度。我在Python 2.7和Excel 2003中对此进行了测试。