動的なコンテンツを含む Word ドキュメントを作成し、プロセスを自動化する必要がありますか? Python は python-docx-template
ライブラリを使用して効率的なソリューションを提供します。 このチュートリアルでは、手動更新の必要性を排除して Word ドキュメントを動的に生成する方法を示します。
請求書の例で説明しましょう。 API からのデータを扱う場合、請求書データを手動で更新するのは面倒で非現実的です。動的生成はこれを解決します。
Word 文書テンプレートを考えてみましょう:
会社の詳細と商品リストは頻繁に変更されます。 動的生成は、この変動性を処理します。
これを実現するには、Jinja2 との互換性のためにテンプレートを変更します。 Jinja2 のテンプレート機能 (条件付きレンダリング、ループ) により、提供されたデータに基づいて動的な作成が可能になります。
Jinja2 互換のテンプレートは次のようになります:
Jinja2 構文 ({% if %}
や {% for %}
など) は最初は複雑に見えるかもしれませんが、強力な制御を提供します。 {{ }}
内の式は、実行時に設定される変数を表します。 たとえば、{% if items %}
はテーブル行をレンダリングする前に items
変数が存在するかどうかをチェックします。 {% for item in items %}
は items
リストを反復処理して、項目ごとに行を生成します。
次に、Python を使用してテンプレートをレンダリングする FastAPI サーバーを作成しましょう。
仮想環境を作成します:
<code class="language-bash">pip3 install virtualenv virtualenv -p python3 venv source venv/bin/activate</code>
ライブラリをインストールします:
<code class="language-bash">pip install "fastapi[standard]" docx docxtpl pydantic requests</code>
main.py
を作成します: 基本的な FastAPI エンドポイントから開始します:
<code class="language-python">from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"}</code>
localhost:8000
にアクセスすると、{"Hello": "World"}
が返される必要があります。
Jinja2 テンプレートをインポートします。 変更した invoice_tpl.docx
をプロジェクト ルートに配置します。
Enhance main.py
: 次のコードは、テンプレートのレンダリング、画像の取得、および合計金額の計算を処理します:
<code class="language-bash">pip3 install virtualenv virtualenv -p python3 venv source venv/bin/activate</code>
エンドポイントをテストします: JSON ペイロード (原文の例と同様) を /
エンドポイントに送信します。
出力例: (元のテキストの画像がここに含まれます)
結論: このチュートリアルでは、python-docx-template
と FastAPI を使用した動的な Word ドキュメントの生成を示します。 Jinja2 と FastAPI を組み合わせることで、ドキュメント作成を自動化するための柔軟なシステムが作成されます。 今後のブログ投稿 (パート 2) では PDF の生成について説明します。
リポジトリ: https://www.php.cn/link/1df146af0948a68b1342ce39907668fe
フセイン・カンタルシをフォローしてください:
プレースホルダー画像 URL を実際の画像 URL に置き換えることを忘れないでください。 また、このコードでは、元の例と同様に、必要なデータ モデル (Company、BankInformation、Item、VatInformation、InvoiceContext) が定義されていることを前提としています。
以上がPython と FastAPI を使用した Word ドキュメント作成の自動化 (python-docx-template を使用)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。