我正在为作业编写一些代码,我需要在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
这已被简化为最低限度.
我用Excel 2003在Python 2.7中测试了这个.