
はじめに
Excelファイルに大量のデータを入力するとき、毎回手作業でセルを埋めていませんか?
その作業、Pythonのopenpyxlライブラリを使えば一瞬で終わるかもしれません。
本記事では、初心者の方にも分かりやすく、openpyxlを使った「Excelへの一括書き込み」方法をソースコード付きで丁寧に解説します。
ぜひ最後まで読んで、明日からの業務や学習に活用してみてください!
openpyxl を使った 一括書き込み
まずは、openpyxlのインストール方法を確認し、Excelの基本構造である「ブック」「ワークシート」「セル」の関係性について整理します。そのうえで、実際の一括書き込み方法として、以下の2つのアプローチを具体的なコード例付きで紹介します。
- 2次元リストを使ったループ処理:複数行・複数列のデータを1つずつセルに書き込む方法
- append()メソッドを使った一括追加:行単位でまとめてデータを追加できる便利な方法
openpyxl のインストール方法
Python で openpyxl を利用する場合、以下のコマンドでインストールを行います。
pip install openpyxl
エクセル操作の基本:ブック・ワークシート・セルの階層構造
openpyxl でエクセルを操作する際には、まずブック(Workbook)・ワークシート(Worksheet)・セル(Cell)の階層構造を理解しておくことが重要です。
- ブック:Excelファイル全体
- ワークシート:ブック内に含まれる個別のシート
- セル:データを入力するマス目の最小単位
Python のコードで「ブックを読み込み、特定のワークシートを選択してセルを指定する」という流れは、この階層構造に基づいています。
一括書き込みの方法
それでは、本題である「一括書き込み」の方法をご紹介します。
手作業で 1 セルずつ書き込むよりもはるかに効率的で、作業ミスも減らせます。
リスト(2次元リスト)を使ったループ処理
Python のリストを活用して、複数のデータをまとめて書き込む方法です。
例えば、表形式のデータを持つ 2 次元リストを想定します。
# 2次元リストを Excel に書き込む例
data = [
["名前", "年齢", "職業"],
["田中", 25, "エンジニア"],
["佐藤", 30, "デザイナー"]
]
wb = Workbook()
ws = wb.active
for row_index, row_data in enumerate(data, start=1):
for col_index, value in enumerate(row_data, start=1):
ws.cell(row=row_index, column=col_index, value=value)
wb.save("bulk_write.xlsx")
上記コードでは、ループを使って行ごと・列ごとにデータを埋めています。これが最もシンプルな一括書き込みの実装例です。
append() を使った一括書き込み
openpyxl には ws.append() という便利なメソッドがあり、リストをまとめて 1 行ずつ追加することができます。データベースから取り出したレコードや CSV データを扱う場合に便利です。
# append() を使ってデータを行ごとに追記
data_to_append = [
["鈴木", 28, "プログラマー"],
["高橋", 27, "営業"]
]
for row_data in data_to_append:
ws.append(row_data)
wb.save("bulk_write.xlsx")
append()を使うと、ループの中で列番号を指定しなくてよいのでコードがスッキリします。
公式ドキュメント
関連記事

コメント