はじめに
毎月の請求書や見積書作成に時間を取られていませんか?
実は、Python と Excel テンプレートを組み合わせることで、請求書・見積書を自動生成することが可能です。
この記事では、業務でよく使う Excel 請求書テンプレートにデータを流し込み、自動生成する方法を解説します。
事務作業を効率化したい方、Pythonを実務で活かしたい方に最適の内容です。
使用するライブラリ
今回使用するのは以下のライブラリです。
- openpyxl:Excelファイルの読み書きを行う
- pandas(任意):顧客データや売上データを整理する際に便利
インストールは以下のコマンドでOKです。
pip install openpyxl pandas
Excelテンプレートの準備
まずは、Excelで「請求書テンプレート」を用意します。
以下のように、差し込みたい箇所にわかりやすい変数名を記入しておきましょう。
例:
{{company_name}}
… 顧客会社名{{client_name}}
… 担当者名{{issue_date}}
… 発行日{{item_name}}
,{{item_price}}
,{{item_qty}}
… 商品情報
このテンプレートを「invoice_template.xlsx」として保存しておきます。
Pythonで請求書を自動生成するコード例
以下のサンプルコードでは、辞書形式で顧客データを管理し、それをテンプレートに書き込んで新しいExcelファイルを出力します。
import openpyxl
from datetime import date
# 顧客データ(本来はDBやCSVから読み込んでもOK)
client_data = {
"company_name": "株式会社テスト",
"client_name": "山田 太郎",
"issue_date": str(date.today()),
"item_name": "システム開発サポート",
"item_qty": 10,
"item_price": 5000
}
# テンプレートを読み込み
template_path = "invoice_template.xlsx"
wb = openpyxl.load_workbook(template_path)
ws = wb.active
# セルにデータを差し込み
for row in ws.iter_rows():
for cell in row:
if cell.value and isinstance(cell.value, str):
for key, val in client_data.items():
if f"{{{{{key}}}}}" in cell.value:
cell.value = cell.value.replace(f"{{{{{key}}}}}", str(val))
# 保存
output_path = f"invoice_{client_data['company_name']}.xlsx"
wb.save(output_path)
print(f"請求書を作成しました: {output_path}")
このコードを実行すると、
テンプレート内の {{company_name}}
などが置換され、請求書が自動生成されます。
応用:複数の請求書を一括生成
もし顧客リストをCSVやExcelで管理している場合、pandasを使って一括生成が可能です。
import pandas as pd
df = pd.read_excel("client_list.xlsx") # 顧客リストを読み込み
for _, row in df.iterrows():
client_data = row.to_dict()
# 上記と同じ処理で請求書を出力
これで、数十件の請求書も一瞬で作成できます。
実務での活用アイデア
- 見積書 → 受注後に請求書を自動生成
- 毎月の定期請求 → 売上データから一括処理
- 部署別の月次報告書 → 請求書と同じ仕組みでテンプレート出力
「フォーマットを統一しつつ、人手で入力する部分をなくす」ことで、
作業時間の削減・転記ミス防止・業務効率化を同時に実現できます。
まとめ
今回は、Python と Excel テンプレートを使って、請求書・見積書を自動生成する方法を紹介しました。
✅ openpyxlでExcelを操作
✅ テンプレートに変数を仕込んで置換
✅ 複数件も一括処理可能
これを実務に取り入れれば、毎月の単純作業から解放され、本来の業務に時間を使えるようになります。
ぜひ一度試してみてください!