セル値書き込みは「Excelの特定セルにPythonから値を入れ、レポートや帳票を自動生成する」ための最重要スキル
Excel業務自動化の中でも セルに値を書き込むことは、ほぼすべての自動化処理の中心になります。
なぜなら、次のような業務がすべて「セル書き込み」で実現できるからです。
- テンプレートExcelにデータを埋め込む
- レポートのタイトルや日付を自動入力する
- 集計結果を指定セルに書き込む
- 入力フォームを自動生成する
- コピーしたシートに値を流し込む
Pythonでは openpyxl を使うことで、Excelのセルに自由に値を書き込めます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
openpyxlでセルに値を書き込む基本(最も実務向け)
最小構成:A1 に値を書き込む
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb["Sheet1"]
ws["A1"] = "こんにちは"
ws["B1"] = 123
wb.save("sample.xlsx")
Python深掘りポイント
ws["A1"] = 値でセルに直接書き込める- 文字列・数値・日付など、Excelが扱えるものは何でも書き込める
- openpyxl は「セル単位の操作」に強いため、細かい制御が可能
行番号・列番号で書き込む(動的な位置指定に便利)
row と column を使って書き込む
ws.cell(row=2, column=3, value="C2 に書き込み")
Python深掘りポイント
row=2, column=3は「C2」を意味する- ループ処理で大量のセルに書き込むときに必須
- 動的にセル位置を決めたい場合に非常に便利
数式を書き込む(Excel側で計算させる)
SUM関数をセルに書き込む
ws["C10"] = "=SUM(C2:C9)"
Python深掘りポイント
- 数式は文字列として書き込むだけでOK
- Excelを開いたときに自動計算される
- レポート自動化で「計算式を埋め込む」場面は非常に多い
日付を書き込む(Excel形式で扱える)
Pythonの datetime をそのまま書き込む
from datetime import datetime
ws["A2"] = datetime.now()
Python深掘りポイント
- openpyxl は datetime を自動で Excel 日付として扱う
- 日付入りレポートやログ作成で必須
セル範囲にまとめて書き込む(表形式の出力に便利)
append() を使って1行ずつ追加
ws.append(["商品", "数量", "金額"])
ws.append(["A", 10, 1000])
ws.append(["B", 20, 2000])
Python深掘りポイント
append()は1行追加する便利なメソッド- 表形式のデータをExcelに書き込むときに最適
- pandas を使わずにExcelだけで完結したい場合に便利
例題①:売上合計をテンプレートの指定セルに書き込む
シナリオ
売上データを読み込み → 合計を B2 に書き込みたい。
from openpyxl import load_workbook
import pandas as pd
df = pd.read_excel("sales.xlsx")
total = df["金額"].sum()
wb = load_workbook("template.xlsx")
ws = wb["Summary"]
ws["B2"] = total
wb.save("report.xlsx")
Python深掘りポイント
- pandas で集計 → openpyxl で書き込み の組み合わせは最強
- テンプレートを使ったレポート自動化の基本パターン
例題②:コピーしたシートに店舗名と売上を埋め込む
シナリオ
テンプレートをコピー → 値を流し込む。
from openpyxl import load_workbook
wb = load_workbook("stores.xlsx")
template = wb["テンプレート"]
ws = wb.copy_worksheet(template)
ws.title = "東京店"
ws["B2"] = "東京店"
ws["B3"] = 250000
wb.save("stores.xlsx")
Python深掘りポイント
- コピーしたシートに値を書き込むだけでレポートが完成
- テンプレートに計算式を入れておけば自動計算される
例題③:Excelを設定ファイルとして使い、値を読み書きする
シナリオ
設定シートに「実行日」「担当者」を書き込みたい。
from openpyxl import load_workbook
from datetime import datetime
wb = load_workbook("config.xlsx")
ws = wb["設定"]
ws["B1"] = datetime.now()
ws["B2"] = "佐藤"
wb.save("config.xlsx")
Python深掘りポイント
- Excelを「設定ファイル」として使う運用は実務で非常に多い
- Pythonから読み書きできるため柔軟性が高い
pathlib を使った読みやすいセル書き込みコード
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
path = Path("sample.xlsx")
wb = load_workbook(path)
ws = wb.active
ws["A1"] = "Hello"
wb.save(path)
Pythonメリット
- パス結合が
/で直感的 - 大規模プロジェクトでも保守性が高い
セル値書き込みを業務で設計するときの視点
- openpyxl は「セル単位の書き込み」に最適
- 数式を書き込むことで Excel 側に計算を任せられる
- append() を使うと表形式のデータを簡単に書き込める
- pandas と組み合わせると集計 → 書き込みが圧倒的に効率化
- テンプレートExcelに値を埋め込むとレポート自動化が一気に進む
