PythonでExcel操作を自動化!「openpyxl」で帳票作成やデータ入力をもっとスマートに

投稿者: | 2026-07-24

みなさん、こんにちは。日々、学校の課題や部活動のデータの整理に追われていませんか?

そんなとき、Excelの作業を自動化できたらとても便利ですよね。今回は、Pythonを使ってExcelファイル(.xlsx)を自在に読み書き・編集できる強力なライブラリ「openpyxl」をご紹介します。これを使えば、面倒なデータ入力やレポート作成も、一瞬で終わらせることができますよ。

openpyxlとは?

openpyxlは、Excel 2010以降の標準フォーマットである「.xlsx」ファイルを、Microsoft Excelがインストールされていない環境でも操作できるようにするPythonライブラリです。新規ファイルの作成から、既存ファイルの読み込み、セルの値や数式の編集、さらには罫線や背景色の設定、グラフの描画まで、Excelに関するほぼすべての操作をコードで表現できます。

ExcelのGUIを開かずに、バックグラウンドで高速に処理できるのがプログラマーっぽくて素敵ですよね。

openpyxlを使うメリット

  • Excel不要で動作する:サーバーサイドのPython環境など、Excelソフト自体がインストールされていない環境でも、きれいなExcelファイルを生成できます。
  • 直感的でわかりやすいAPI:シート、セル、行、列といったExcelの概念がそのままクラスやメソッドになっており、直感的にコードを書くことができます。
  • デザインやグラフもサポート:ただデータを流し込むだけでなく、セルの色分けやフォントの変更、グラフの追加など、見栄えの良いレポートを自動作成できます。

数式も文字列としてセルに代入するだけで、Excelを開いたときに自動で計算してくれるんですよ。

簡単なサンプルコード

実際に、新規のExcelファイルを作成し、データを書き込んでスタイルを適用するコードを見てみましょう。

pip install openpyxl
import openpyxl
from openpyxl.styles import Font, PatternFill

# 1. 新規ワークブックの作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "成績表"

# 2. データの書き込み
data = [
    ["名前", "数学", "英語", "国語"],
    ["アリス", 85, 92, 78],
    ["ボブ", 76, 88, 82],
    ["チャーリー", 90, 85, 95]
]

for row in data:
    ws.append(row)

# 3. 数式の追加(平均点を計算)
ws["A5"] = "平均"
ws["B5"] = "=AVERAGE(B2:B4)"
ws["C5"] = "=AVERAGE(C2:C4)"
ws["D5"] = "=AVERAGE(D2:D4)"

# 4. スタイルの適用(ヘッダーを太字&背景色設定)
header_font = Font(name="Meiryo UI", size=11, bold=True, color="FFFFFF")
header_fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")

for col in range(1, 5):
    cell = ws.cell(row=1, column=col)
    cell.font = header_font
    cell.fill = header_fill

# 5. 保存
wb.save("grade_report.xlsx")
print("Excelファイルを作成しました!")

みーちゃんのワンポイント

openpyxlで大きなファイルを扱うときは、メモリ消費に注意しましょう。読み込み専用の read_only=True や書き込み専用の write_only=True モードを活用すると、メモリを大幅に節約できて動作も軽快になりますよ。