大量コピー&ペーストや毎月の帳票づくりを手作業で続けるのは大変ですよね。
本記事では 「最短5分で動くサンプル」→「実務ユースケース」→「エラー対処」 の流れで、
Excel操作ライブラリ openpyxl の基本を解説します。
対象読者
- Excelマクロに限界を感じ、Pythonで効率化したい初〜中級者
- データ変換・レポート作成を“毎月のルーチン”から“ワンクリック”に変えたい方
目次
openpyxlとは? :できることと他ライブラリ比較
- Office Open XML(.xlsx/.xlsm など)の読み書き専用ライブラリ
- VBAやCOMを使わないため、Windows/macOS/Linux どこでも実行可能
- 罫線・書式・グラフ・画像の挿入まで対応
- Pandas・Seleniumと組み合わせれば、ブラウザ自動操作やデータ分析との連携も自在
詳しくは公式ドキュメントを参照ください。openpyxl.readthedocs.io
インストールと環境チェック
pip install openpyxl執筆時点(2025年7月)の最新安定版は v3.1.5 です。PyPI
バージョンを確認するには:
import openpyxl
print(openpyxl.__version__) # → 3.1.5最短5分で動くサンプル ― 新規ブック作成
from openpyxl import Workbook
wb = Workbook() # 新規ブックを生成
ws = wb.active # アクティブシート取得
ws["A1"] = "Hello openpyxl!"# セル書き込み
wb.save("hello.xlsx") # ファイル保存
print("Excelを自動生成しました ✅")POINT
- Workbook() で空のブックを作成
- ws = wb.active で既定シートを取得
- セルはA1形式で直接アクセス
既存ファイルを開いて編集
from openpyxl import load_workbook
wb = load_workbook("hello.xlsx")
ws = wb.active
print(ws["A1"].value) # → Hello openpyxl!
ws["B1"] = "=SUM(1, 2, 3)" # 数式もそのまま書き込める
wb.save("hello_edited.xlsx")
実務で役立つ3シナリオ
1. 請求書テンプレートへ自動入力
template = load_workbook("invoice_template.xlsx")
ws = template["請求書"]
ws["D4"] = "株式会社サンプル"
ws["D5"] = "2025/07/31"
for i, (name, qty, price) in enumerate(items, start=8):
ws[f"A{i}"] = name
ws[f"D{i}"] = qty
ws[f"E{i}"] = price
template.save("invoice_202507.xlsx")
2. 複数CSVを1ブックに統合
import csv, glob
from openpyxl import Workbook
wb = Workbook()
for csv_path in glob.glob("*.csv"):
ws = wb.create_sheet(title=csv_path[:-4])
with open(csv_path, newline="") as f:
for row in csv.reader(f):
ws.append(row)
wb.remove(wb["Sheet"]) # 既定シートを削除
wb.save("merged.xlsx")
3. データからグラフ付きレポートを自動生成
from openpyxl.chart import BarChart, Reference
wb = load_workbook("sales_data.xlsx")
ws = wb.active
chart = BarChart()
chart.title = "月別売上"
data = Reference(ws, min_col=2, max_col=2, min_row=1, max_row=13)
cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws.add_chart(chart, "D2")
wb.save("sales_report.xlsx")
シート & セル操作まとめ
| 操作 | コード例 |
|---|---|
| シート追加 | wb.create_sheet(title="2025年7月") |
| シート名変更 | ws.title = "メインシート" |
| シートコピー | wb.copy_worksheet(ws) |
| シート削除 | del wb["不要シート"] |
| セル結合 | ws.merge_cells("A1:D1") |
| セル幅調整 | ws.column_dimensions["A"].width = 20 |
スタイルと書式設定
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
ws["A1"].font = Font(bold=True, color="FFFFFF", size=14)
ws["A1"].fill = PatternFill("solid", fgColor="4F81BD")
ws["A1"].alignment = Alignment(horizontal="center", vertical="center")
thin = Side(border_style="thin", color="000000")
ws["A1"].border = Border(top=thin, left=thin, right=thin, bottom=thin)
詳しくはこちら


openpyxlを使ったスタイルの設定方法:文字色、背景色、フォントなど【Python】
Excelファイルを扱う際に、見た目を整えることは非常に重要です。openpyxlを使用すると、セルのフォント、色、罫線、条件付き書式など、多彩なスタイル設定が可能です。…
読み書き高速化Tips
- read_only=True でメモリを節約しつつストリーミング読取
- write_only=True で大量行の書き込みを高速化
data_only=Trueで“数式結果” だけを取得(再計算はしない点に注意)
よくあるエラーと対処法 FAQ
まとめ:openpyxlで退屈なExcel作業を自動化しよう
- インストールは1行、基本操作は5行
- テンプレート活用で請求書やレポート作成を自動化
- 書式・グラフ・画像も自在に操作できるため、VBA置き換えに最適
- 次のステップとして Selenium自動実行 もチェック
あわせて読みたい


BeautifulSoupとSelenium併用:ウェブスクレイピング効率化【Python】
ウェブスクレイピングは、ウェブサイトからデータを自動的に収集する技術です。Pythonには多くのスクレイピングライブラリがありますが、特に人気が高いのはBeautifulSo…
¥2,640 (2026/01/10 15:21時点 | Amazon調べ)

