既存のExcelファイルに書き込んでグラフを作成

Excelでグラフを作成することがあるが、コピペで数値を処理するのが面倒になってきたので、pythonで処理する。

  • 行いたいこと
    • pythonからExcelファイルを操作するには、win32comモジュールを使う。
    • グラフの雛型を作っておいて、指定したセルに値を書き込めばグラフ化されるようにする。
    • グラフの雛型はExcelファイル(ファイル名test_sheet.xls)で保存する。

始めに下図のtest_sheet.xlsを作成しておく。ファイルはC:\Doc\Python-development\test_sheet.xlsに置かれているものとする。

実行するコードは以下の通り。

from math import *
import win32com.client

RowNum = 50                 # 数値データは50行分ある

# open excel file
xlApp = win32com.client.Dispatch("Excel.Application")
# ファイルを開く。rを付けてエスケープシーケンスを無効化
xlApp.Workbooks.Open(r"C:\Doc\Python-development\test_sheet.xls") 
xlApp.Visible = 1              # Excelが画面で起動する
xlSheet = xlApp.Workbooks(1).Sheets(1)

# define function
xval = [x for x in xrange(RowNum)]          # x, yに入れる値を定義する
yval = [sin(2*pi/RowNum*x) for x in xrange(RowNum)]

# write the values on sheet
for i in xrange(RowNum):         # セルの値を書き変える
    eggCellx = xlSheet.Cells(i+1, 1)
    eggCelly = xlSheet.Cells(i+1, 2)
    eggCellx.Value = xval[i]
    eggCelly.Value = yval[i]

# close the sheet            # 起動していたExcelが終了する
#xlApp.Quit()

このコードを実行すると、下図のようにExcelファイルが開いて新しいグラフが表示される。