使用win32com的Python Excel图表系列

2024-06-28 10:14:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为作业编写一些代码,我需要在Excel中创建一个简单的柱形图。今天下午我发现了win32com(顺便提一下,这是一个非常棒的工具),但是我一直在为缺少关于它的文档而苦恼,或者我没有找到它的运气

我在玩图表,我想我已经做到了我想要的,除了一个小例外:我编写的函数总是创建两个列系列。在

我得到的是:

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轴上创建第二系列值。。。在

非常感谢您的帮助,谢谢!在


Tags: nameaddvaluechart图表rangeexcelseries
1条回答
网友
1楼 · 发布于 2024-06-28 10:14:26

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

series = chart.SeriesCollection().NewSeries()

我能够简单地引用一个现有的系列

^{pr2}$

下面的代码似乎给了我在计算机上所需的行为。在

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

这已被简化到最低限度。 我用Excel2003在Python2.7中进行了测试。在

相关问题 更多 >