「pythons win32com エクセル セル 入力」
といった検索キーワードでアクセスがありました。
pywin32ライブラリを使って、Excelのセルにデータを入力するには、どのようなPythonのコードを書けばいいのか探していた方による検索でしょう。
pywin32を使ってセルにデータを入力するサンプル
Excelを起動しておいてから、以下のようなコードを実行すると、アクティブシートのA1セルに数値「123」、A2セルに文字列「xyz」が入力されます。
xl_app = win32com.client.GetObject(Class='Excel.Application')
xl_app.Range('A1').Value = 123
xl_app.Cells(2, 1).Value = 'xyz'
上記のコードを、拙著『VBAユーザーのためのPython超入門』でも多用しているIDLEのShellウィンドウから実行する様子を、動画にしています。よろしければご覧ください。→ YouTube「pywin32を使ってExcelのセルにデータを入力する」
サンプルで行っている処理について
ここでは、起動済みExcelへのデータ入力を行うために、
xl_app = win32com.client.GetObject(Class='Excel.Application')
と、win32com.clientのGetObject関数を使っています。
もしも新規にExcelを起動したいのならば、
xl_app = win32com.client.Dispatch('Excel.Application')
xl_app.Visible = True
xl_app.Workbooks.Add()
のようなコードにしてください。
データを入力するコードはExcel VBAと似ている
Excelへの参照を取得した後の、
xl_app.Range('A1').Value = 123
xl_app.Cells(2, 1).Value = 'xyz'
の部分は、Excel VBAを理解できていれば難しくないでしょう。
ExcelのApplicationオブジェクトに用意されているRangeプロパティで、A1セルを表すRangeオブジェクトを取得し、
xl_app.Range('A1').Value = 123
RangeオブジェクトのValueプロパティを使って数値データを入力しています。
xl_app.Range('A1').Value = 123
つづいて、ApplicationオブジェクトのCellsプロパティで、全セルを表すコレクションとしてのRangeオブジェクトを取得し、
xl_app.Cells(2, 1).Value = 'xyz'
Rangeオブジェクトの既定プロパティを使ってA2セルを表すRangeオブジェクトを取得して、
xl_app.Cells(2, 1).Value = 'xyz'
やはりRange.Valueプロパティを使って文字列データを入力しています。
xl_app.Cells(2, 1).Value = 'xyz'
Excel VBAで書くならば、
Dim xl_app As Application
Set xl_app = Application
xl_app.Range("A1").Value = 123
xl_app.Cells(2, 1).Value = "xyz"
といったコードです。
Home » Python » pywin32・win32comの使い方 » pywin32を使ってExcelのセルにデータを入力する