請求書・見積書をPythonで自動生成!Excelテンプレート活用術

はじめに

毎月の請求書や見積書作成に時間を取られていませんか?
実は、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を操作
テンプレートに変数を仕込んで置換
複数件も一括処理可能

これを実務に取り入れれば、毎月の単純作業から解放され、本来の業務に時間を使えるようになります。

ぜひ一度試してみてください!

タイトルとURLをコピーしました