PythonでExcelファイルを操作するopenpyxlライブラリ・その1(基本)

Excelで操作を自動化する際に、VBA(Visual Basic for Applications)でマクロを組むことが多いです。
ただ、VBAは古い言語なので、今時の言語でExcelを操作したい方が多いのではないでしょうか。
そのような方には、PythonでExcelファイルを操作することができる「openpyxl」ライブラリがあります。
このopenpyxlライブラリのインストールから最初のスクリプトまでを紹介します。


1.openpyxlライブラリのインストール

openpyxlライブラリはpipコマンドでインストールすることができます。
コマンド入力できる状態(例:Windowsのコマンドプロンプト)で、以下のコマンドを入力します。

pip install openpyxl

なお、Linuxなどでは、「sudo pip install openpyxl」と入力して、管理者権限でインストールすることが必要な場合があります。

2.ファイルの新規作成から保存まで

ファイルを新規作成し、セルに値を入力して、そのファイルを保存するまでの流れは、以下のようになります。

2-1.ライブラリのインポート

まず、以下の文でライブラリをインポートします。

from openpyxl import Workbook

2-2.ブックの作成

Workbook関数を実行するとブック(のオブジェクト)が新規作成されます。
作成したブックは変数に割り当てます。

例えば、新規作成したブックを変数wbに割り当てるには、以下のように書きます。

wb = Workbook()

2-3.ワークシートの取得

Workbook関数で新規作成したブックには、シートが1枚ある状態です。
そのシート(のオブジェクト)は、ブックの「active」というプロパティで取得することができます。

例えば、新規作成したブックを変数wbに割り当てたときに、そのブックのワークシートを変数wsに割り当てるには、以下のように書きます。

ws = wb.active

2-4.セルの操作

ワークシート上のセルは、以下のどちらかの書き方で表すことができます。

  • ワークシート['セル番号']
  • ワークシート.cell(row = 行番号, column = 列番号)

1つ目の方法で表す場合、セルの値を取得したり、値を代入したりすることができます。
また、2つ目の方法で表す場合、セルに値を代入するには、「value = 値」の引数を追加します。

例えば、変数wsにワークシートを割り当てている場合、そのA1セルの値を100にするには、以下のどちらかの書き方をします。

ws['A1'] = 100
ws.cell(row = 1, column = 1, value = 100)

2-5.ブックの保存

ブックのsaveメソッドを実行して、ブックをファイルに保存することができます。
引数でファイル名を指定します。

例えば、ブックwbを「sample.xlsx」というファイルに保存するには、以下のように書きます。

wb.save('sample.xlsx')

3.既存のファイルを開く

既存のファイルを開いて操作するには、以下の手順を取ります。

3-1.ライブラリのインポート

以下の文でライブラリをインポートします
なお、新規作成のときと異なりますので、注意してください。

from openpyxl import load_workbook

3-2.ブックを開く

load_workbook関数を実行すると、ブックが開いてそのオブジェクトが新規作成されます。
オブジェクトは変数に割り当てます。

例えば、「sample.xlsx」ファイルを開いて変数wbに割り当てるには、以下のように書きます。

wb = load_workbook('sample.xlsx')

3-3.ブックを開いた後の操作

ブックを開いた後は、新規作成したときと同様の手順で操作することができます。
saveメソッドでファイルを保存する場合、既存のファイルに上書きするときでもファイル名を指定する必要があります。

4.サンプルプログラム

今回紹介した内容のサンプルプログラムは、githubの以下のアドレスからダウンロードすることができます。

https://github.com/hajimef/openpyxl_sample