2011-06-14 4 views
0

Я пишу код для задания, и мне нужно создать простую диаграмму столбцов в Excel. Сегодня днем ​​я нашел win32com (замечательный инструмент, кстати), но я страдал либо отсутствием документации об этом, либо отсутствием удачи, чтобы найти его.^Python - Серия 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 

создать новую серию внутри диаграммы, и она содержит всю информацию, что мне нужно. Тем не менее, когда я запускаю сценарий, я получаю таблицу Excel с 4 столбцами, с той же информацией (попарно). Я сделал все, что мог, но я просто не могу найти, что создает эту вторую серию значений по оси Х ...

Я очень благодарен за любую помощь ^^ Спасибо!

ответ

1

Наблюдая за поведением записи макросов в 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.

+0

Отличный !! Да, это отлично работает ^^ Теперь я могу использовать серию, которую Excel создает вместе с новой диаграммой, а не создавать новую. Спасибо огромное! – dhcarmona

Смежные вопросы