Excel帳票生成は「定型フォーマットを自動で作り、毎月の提出資料をゼロ秒で完成させる」ための最強スキル
Excel業務自動化の中でも 帳票(レポート・申請書・明細書など)の自動生成 は効果が圧倒的です。
なぜなら、実務では次のような帳票を毎回手作業で作っているからです。
- 売上明細書
- 請求書
- 発注書
- 日報・週報・月報
- チェックリスト
- 入力フォーム付き帳票
Python(openpyxl)を使えば、
テンプレート作成 → データ差し込み → 書式設定 → 保存
まで完全自動化できます。
初心者でも理解しやすいように、
「基本構造 → 実務テンプレ → 応用」
の順で丁寧に解説します。
帳票生成の基本構造(最重要ポイント)
帳票は次の4ステップで作る
- テンプレート(雛形)を作る
- データを読み込む(Excel / CSV / DB)
- テンプレートにデータを差し込む
- 書式を整えて保存する
この流れを理解すれば、どんな帳票でも自動生成できます。
基本:シンプルな帳票を作る最小コード
タイトル・日付・明細を自動で書き込む例
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment
wb = Workbook()
ws = wb.active
ws.title = "帳票"
# タイトル
ws["A1"].value = "売上帳票"
ws["A1"].font = Font(size=16, bold=True)
ws["A1"].alignment = Alignment(horizontal="center")
ws.merge_cells("A1:D1")
# 日付
ws["A2"].value = "日付"
ws["B2"].value = "2026-04-27"
# 明細ヘッダー
headers = ["商品", "数量", "単価", "金額"]
for col, text in zip(["A", "B", "C", "D"], headers):
ws[f"{col}4"].value = text
ws[f"{col}4"].font = Font(bold=True)
# 明細データ
data = [
["りんご", 10, 100, 1000],
["みかん", 5, 80, 400],
]
for i, row in enumerate(data, start=5):
for j, value in enumerate(row, start=1):
ws.cell(row=i, column=j, value=value)
wb.save("report.xlsx")
Python深掘りポイント
merge_cellsでタイトルを中央に大きく表示- ヘッダーは太字にして帳票らしさを出す
- 明細はループで自動書き込み
- 帳票の基本構造がこのコードで理解できる
書式を整えて帳票らしくする(実務で必須)
罫線を付ける
from openpyxl.styles import Border, Side
border = Border(
left=Side(style="thin"),
right=Side(style="thin"),
top=Side(style="thin"),
bottom=Side(style="thin")
)
for row in ws["A4:D6"]:
for cell in row:
cell.border = border
Python深掘りポイント
- 帳票は「罫線」があるだけで完成度が一気に上がる
- 明細部分に必ず罫線を付けるのが実務の定番
列幅・行高さを調整して見やすくする
ws.column_dimensions["A"].width = 20
ws.column_dimensions["B"].width = 10
ws.column_dimensions["C"].width = 10
ws.column_dimensions["D"].width = 12
ws.row_dimensions[1].height = 25
Python深掘りポイント
- 帳票は「見やすさ」が命
- 列幅・行高さを整えるとプロ品質になる
実務テンプレ①:売上明細帳票の自動生成
A列:商品、B列:数量、C列:単価、D列:金額
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, Border, Side
wb = Workbook()
ws = wb.active
ws.title = "売上明細"
# タイトル
ws["A1"].value = "売上明細書"
ws["A1"].font = Font(size=16, bold=True)
ws.merge_cells("A1:D1")
ws["A1"].alignment = Alignment(horizontal="center")
# ヘッダー
headers = ["商品", "数量", "単価", "金額"]
for col, text in zip(["A", "B", "C", "D"], headers):
ws[f"{col}3"].value = text
ws[f"{col}3"].font = Font(bold=True)
# データ
data = [
["りんご", 10, 100, 1000],
["みかん", 5, 80, 400],
["バナナ", 8, 120, 960],
]
for i, row in enumerate(data, start=4):
for j, value in enumerate(row, start=1):
ws.cell(row=i, column=j, value=value)
# 罫線
border = Border(
left=Side(style="thin"),
right=Side(style="thin"),
top=Side(style="thin"),
bottom=Side(style="thin")
)
for row in ws["A3:D6"]:
for cell in row:
cell.border = border
wb.save("sales_report.xlsx")
Python解説
- 実務で最も使われる帳票形式
- タイトル → ヘッダー → 明細 → 罫線 の流れが鉄板
実務テンプレ②:請求書の自動生成
顧客名・日付・明細・合計金額を自動で作成
ws["A2"].value = "請求先"
ws["B2"].value = "株式会社サンプル"
ws["A3"].value = "請求日"
ws["B3"].value = "2026-04-27"
# 合計金額
ws["C10"].value = "合計"
ws["D10"].value = "=SUM(D5:D9)"
ws["C10"].font = Font(bold=True)
Python解説
- Excelの数式も自動で入れられる
- 請求書の自動生成は実務で非常に多い
実務テンプレ③:チェックリスト帳票
ws["A1"].value = "チェック項目"
ws["B1"].value = "確認"
items = ["在庫確認", "売上確認", "メール送信", "資料提出"]
for i, item in enumerate(items, start=2):
ws.cell(row=i, column=1, value=item)
ws.cell(row=i, column=2, value="")
Python解説
- 日次・週次のチェックリストを自動生成
- 業務効率化に直結する帳票
Excel帳票生成を業務で設計するときの視点
- 帳票は「タイトル」「ヘッダー」「明細」「罫線」の4要素で構成
- openpyxl は帳票生成に最適(書式設定が自由)
- pandas と組み合わせると大量データも自動差し込み可能
- テンプレート化すれば毎月の帳票作成が完全自動化
- 数式も自動挿入できるため計算ミスがゼロになる
