需要建立具有動態內容的 Word 文件並自動化該過程? Python 和 python-docx-template
函式庫提供了一個有效的解決方案。 本教學示範如何動態產生Word文檔,無需手動更新。
讓我們用發票範例來說明。 處理來自 API 的資料時,手動更新發票資料既乏味又不切實際。動態生成解決了這個問題。
考慮一個 Word 文件範本:
公司詳細資料和項目清單經常發生變化。 動態生成處理這種可變性。
要實現此目的,請修改 Jinja2 相容性範本。 Jinja2 的模板功能(條件渲染、循環)可根據提供的資料進行動態填充。
Jinja2 相容範本如下圖所示:
Jinja2 語法(例如 {% if %}
和 {% for %}
)最初可能看起來很複雜,但它提供了強大的控制。 {{ }}
中的表達式表示運行時填充的變數。 例如,{% if items %}
在渲染表行之前檢查 items
變數是否存在。 {% for item in items %}
迭代 items
列表,為每個項目產生一行。
現在,讓我們建立一個 FastAPI 伺服器來使用 Python 渲染模板。
建立虛擬環境:
<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
放在專案根目錄中。
增強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
關注 Husein Kantarci:
請記得將佔位符圖像 URL 替換為實際圖像 URL。 程式碼也假設您已定義必要的資料模型(Company、BankInformation、Item、VatInformation、InvoiceContext),如原始範例所示。
以上是使用 Python 和 FastAPI 自動建立 Word 文件(使用 python-docx-template)的詳細內容。更多資訊請關注PHP中文網其他相關文章!