Python – serie di grafici Extra Excel con win32com

Sto scrivendo un codice per un'assegnazione e ho bisogno di creare un semplice grafico a colonna in Excel. Questo pomeriggio ho scoperto win32com (strumento stupefacente per strada), ma ho sofferto sia dalla mancanza di documentazione su di esso, sia dalla mia mancanza di fortuna per trovarlo ^^

Sto giocando in giro con i grafici e penso di aver fatto quello che voglio, con una piccola exception: la function che ho scritto crea sempre due serie di colonne.

Questo è quello che ho:

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 

Creo una nuova serie all'interno del grafico e contiene tutte le informazioni necessarie. Tuttavia, quando eseguo lo script, mi concludo con un grafico di Excel con 4 colonne, con le stesse informazioni (in coppia). Ho fatto tutto quello che posso, ma non riesco a trovare quello che sta creando questa seconda serie di valori sull'asse X …

Mi apprezzo molto qualsiasi aiuto ^^ Grazie!

Osservando il comportmento della logging di una macro in Excel che esegue le stesse azioni di cui siamo in replica in Python possiamo vedere che non sembra necessario creare una nuova serie come

 series = chart.SeriesCollection().NewSeries() 

Sono stato in grado di riferirmi semplicemente a una serie esistente

 series = chart.SeriesCollection(1) 

Il seguente codice sembra darmi il comportmento desiderato sul mio computer.

 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 

Questo è stato semplificato al minimo. Ho provato questo in Python 2.7 con Excel 2003.