このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】Excelを自動化する(openpyxlライブラリ)

Excelを自動化する(openpyxlライブラリ)

 Excelは、数値データの集計や書類作成などに広く活用されている表計算ソフトウェアです。多くの方が日々の業務や個人のタスクで利用しているかと思います。ExcelにはVBA(Visual Basic for Applications)という言語が内蔵されており、自動化やマクロの作成が可能です。しかし、Pythonエンジニアであれば、「普段慣れ親しんでいるPythonからExcelを操作したい」と感じる場面も少なくありません。
 そこで登場するのが、PythonからExcelファイルを読み書きできるライブラリ「openpyxl」です。openpyxlを使えば、Excelファイルの新規作成やセルへの書き込み・読み取りなどの操作をPythonでスクリプトとして実行できます。ここでは、openpyxlライブラリを用いたExcelの基本的な操作について解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.PythonからExcelを操作するための準備

まずは、openpyxlライブラリの概要とインストール方法を確認しましょう。

1.1. openpyxlとは

 openpyxlは、PythonからExcelファイル(拡張子が.xlsxのもの)を扱うためのライブラリです。次のような操作が可能になります。

  • 新しいExcelファイル(ワークブック)の作成
  • セルに文字列や数値を書き込む。
  • セルから値を読み取る。
  • シートの追加や削除。
  • セルの書式設定 など。

Pythonの標準ライブラリには含まれていないため、必要に応じてインストールが必要です。

1.2. openpyxlのインストール方法

 openpyxlをインストールする方法はいくつかあります。Anacondaを利用している場合は、最初から含まれていることが多いですが、環境によっては別途インストールする必要があります。以下の表にまとめます。

インストール環境コマンド備考
CPython(通常のPython)pip install openpyxlPythonの環境によっては管理者権限が必要な場合あり
Anaconda/Minicondaconda install -y openpyxlAnaconda Navigator等のGUIからも可能

 上記のいずれかの方法でインストールが完了すれば、Pythonスクリプトや対話型環境(Python REPL、Jupyter Notebookなど)からopenpyxlをimportして利用できるようになります。

2.新しいExcelファイルを作成して保存する

 ここからは実際にコードを書いてみましょう。まずは新規にExcelファイル(ブック)を生成し、保存する手順を確認します。

2.1. ワークブックの作成

 openpyxlを使う場合、次のようにライブラリをインポートし、Workbookクラスを呼び出してオブジェクトを生成します。

import openpyxl

# 新しいExcelファイル(ワークブック)を作成
wb = openpyxl.Workbook()
  • import openpyxl
    Pythonでopenpyxlライブラリを使うための宣言です。
  • openpyxl.Workbook()
    新しいワークブック(=Excelのブックと同等)を生成します。

2.2. ワークブックの保存

 生成したワークブックをExcel形式のファイル(拡張子が.xlsx)として保存するには、save()メソッドを利用します。

# ワークブックをファイルに保存
wb.save("sample.xlsx")
  • wb.save("sample.xlsx")
    wb(Workbookオブジェクト)を“sample.xlsx”という名前で保存します。
    ・同名のファイルが既に存在する場合は上書きされるため、注意が必要です。

 このプログラムを実行すると、カレントディレクトリに“sample.xlsx”が新たに作成されます。Excelがインストールされている環境であれば、ファイルをダブルクリックして内容を確認できます。

3.セルの読み書き

 次に、作成したExcelファイルのセルへ実際に値を書き込んだり、書き込んだ値を読み取ったりする方法を見ていきましょう。

3.1. ワークシートの取得

 Excelファイル(ワークブック)には1つ以上のワークシートが含まれます。新しくワークブックを作成すると、自動的に1つのシートが用意され、これが「アクティブシート」として設定されます。アクティブシートを取得するには、次のように書きます。

import openpyxl

# 新しいブックを作成してアクティブシートを取得
wb = openpyxl.Workbook()
ws = wb.active
  • wb.active
    ・ワークブック内で現在アクティブなワークシートを参照します。
    ・ここでは変数wsがワークシートのオブジェクトになります。

3.2. セルへの書き込み

 ワークシートオブジェクトに対して、セルの位置(例:「A1」や「B2」など)を指定すると、そのセルの値を読み書きすることができます。

# A1セルとB1セルに値を書き込む
ws["A1"] = "umbrella"  # A1セルに文字列をセット
ws["B1"] = 1800        # B1セルに数値をセット

# A2セルとB2セルにも書き込む(例)
ws["A2"] = "gloves"
ws["B2"] = 1500
  • ws["A1"] = "umbrella"
    ・セル“A1”に文字列"umbrella"を書き込みます。
    ・代入による書き込みが可能です。
  • ws["B1"] = 1800
    ・セル“B1”に数値1800を書き込みます。
  • ws["A2"] = "gloves" / ws["B2"] = 1500
    ・同様に2行目にも別の値を書き込みます。

※ Excelのセル指定で列にはアルファベットが、行には数字が用いられる点に注意しましょう。

3.3. セルの値の読み取り

すでに書き込まれたセルの値をプログラムから参照するには、value属性を利用します。

value_a1 = ws["A1"].value
value_b1 = ws["B1"].value

print("A1セルの値:", value_a1)
print("B1セルの値:", value_b1)

実行結果

A1セルの値: umbrella
B1セルの値: 1800
  • ws["A1"].value
    セル“A1”に格納された値を取得します。
  • 変数に代入し、print()で出力するとPythonのコンソールに内容を表示できます。

 最後に、ワークブックの内容が反映されるよう、再度save()メソッドを呼び出して保存しましょう。

wb.save("sample.xlsx")

「sample.xlsx」を開くと処理した内容が反映されていることが確認できます。

まとめ

 openpyxlライブラリを使えば、Pythonで新しいExcelファイルを生成し、セルに値を書き込み、値を読み取るといった操作を簡単に行うことができます。VBAよりも慣れたPythonの文法でExcelを制御できるため、データ処理や大量ファイルの一括操作など、さまざまな自動化が期待できます。今後はシートの追加やコピー、セルの書式設定など、より高度な機能を使うことで、さらに複雑な業務の効率化を図ることができるでしょう。