Excel請求書作成は「テンプレートに自動で値を流し込み、請求書作成をゼロ秒にする」ための最強スキル
Excel請求書作成の自動化は“ミス防止 × 時間削減 × 品質向上”を同時に達成できる最重要領域 です。
請求書は毎月必ず発生し、 手入力だと「金額ミス」「日付ミス」「顧客名ミス」が起きやすい領域です。
Pythonを使えば、 テンプレ読み込み → 顧客情報入力 → 明細入力 → 合計計算 → 保存 まで完全自動化できます。
初心者でも理解できるように、例題を交えて丁寧に解説します。
請求書テンプレートの基本構造(最重要ポイント)
請求書テンプレートは次の3つで構成されます。
請求先情報
会社名、住所、担当者名、請求日など。
明細表
商品名、数量、単価、金額など。
合計欄
小計、消費税、合計金額。
Pythonでは openpyxl を使うことで、 Excelを開かずに自動入力できます。
最も基本的な「請求書自動入力」テンプレート
顧客情報と合計金額をテンプレに流し込む例
from openpyxl import load_workbook
wb = load_workbook("invoice_template.xlsx")
ws = wb["請求書"]
ws["B3"].value = "MONO株式会社"
ws["B4"].value = "東京都江戸川区"
ws["B5"].value = "担当:田中様"
ws["F3"].value = "2026-07-01"
ws["F20"].value = 150000 # 合計金額
wb.save("invoice_filled.xlsx")
Python深掘りポイント
セル番地(例:B3、F20)に値を入れるだけで請求書が完成します。 Excelを開かずに自動入力できるため、 請求書作成の手間が一気にゼロになります。
明細表を自動入力する(請求書自動化の中心)
DataFrameの行をテンプレに書き込む例
import pandas as pd
from openpyxl import load_workbook
df = pd.read_excel("invoice_items.xlsx")
wb = load_workbook("invoice_template.xlsx")
ws = wb["請求書"]
start_row = 10
for i, row in df.iterrows():
ws[f"A{start_row+i}"] = row["商品名"]
ws[f"C{start_row+i}"] = row["数量"]
ws[f"D{start_row+i}"] = row["単価"]
ws[f"F{start_row+i}"] = row["数量"] * row["単価"]
wb.save("invoice_items_filled.xlsx")
Python深掘りポイント
明細表は「行を繰り返し入力する」処理が中心です。 iterrows() を使うことで、Excelの表に自動で行を追加できます。 請求書の明細が多いほど自動化の効果が大きくなります。
合計金額・消費税を自動計算する(ミス防止に必須)
明細から小計・消費税・合計を計算する例
df["金額"] = df["数量"] * df["単価"]
subtotal = df["金額"].sum()
tax = subtotal * 0.1
total = subtotal + tax
ws["F18"] = subtotal
ws["F19"] = tax
ws["F20"] = total
Python深掘りポイント
請求書の金額ミスは絶対に避けたい領域です。 Pythonで計算すれば、 「手入力による計算ミス」が完全に消えます。
請求書を複数顧客分まとめて自動生成する(最強の効率化)
顧客リストを読み込んで請求書を一括作成する例
import pandas as pd
from openpyxl import load_workbook
customers = pd.read_excel("customers.xlsx")
for idx, customer in customers.iterrows():
wb = load_workbook("invoice_template.xlsx")
ws = wb["請求書"]
ws["B3"] = customer["会社名"]
ws["B4"] = customer["住所"]
ws["B5"] = customer["担当者"]
ws["F3"] = customer["請求日"]
ws["F20"] = customer["請求金額"]
wb.save(f"invoice_{customer['会社名']}.xlsx")
Python深掘りポイント
顧客が10社でも100社でも、 一瞬で請求書が完成します。 月末の請求業務が劇的に楽になります。
請求書のセル位置を辞書で管理すると最強
セル位置を辞書化して管理する例
mapping = {
"会社名": "B3",
"住所": "B4",
"担当者": "B5",
"請求日": "F3",
"合計金額": "F20"
}
for key, cell in mapping.items():
ws[cell] = customer[key]
Python深掘りポイント
テンプレートのセル位置が変わっても、 辞書を修正するだけで対応できます。 大規模帳票システムで必須の設計です。
請求書を「見やすいExcel」に整形する
列幅を自動調整する例
from openpyxl.utils import get_column_letter
for col in range(1, 8):
max_length = 0
col_letter = get_column_letter(col)
for cell in ws[col_letter]:
if cell.value:
max_length = max(max_length, len(str(cell.value)))
ws.column_dimensions[col_letter].width = max_length + 2
Python深掘りポイント
請求書は「見た目」が非常に重要です。 列幅を自動調整するだけで、 提出できるレベルの請求書になります。
請求書作成を業務で設計するときの視点
顧客情報・明細・合計の3構造を意識する
請求書はこの3つで成り立っています。
セル位置を辞書化する
テンプレ変更に強くなります。
明細は DataFrame で管理する
行追加が簡単になります。
複数顧客の一括生成を自動化する
月末業務が劇的に楽になります。
