0

課題のコードを書いていて、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 軸でこの 2 番目の一連の値を作成しているものを見つけることができません...

どんな助けにも感謝します^^ありがとう!

4

1 に答える 1

2

Python でのレプリケーションと同じアクションを実行するマクロを Excel で記録する動作を観察すると、次のような新しいシリーズを作成する必要がないように見えることがわかります。

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 でこれをテストしました。

于 2011-06-15T18:40:34.637 に答える