编程语言
首页 > 编程语言> > Python – 带有win32com的额外Excel图表系列

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

这已被简化为最低限度.
我用Excel 2003在Python 2.7中测试了这个.

标签:series,python,charts,excel,win32com
来源: https://codeday.me/bug/20191007/1865799.html