首頁 >後端開發 >Python教學 >使用 Python 和 FastAPI 自動建立 Word 文件(使用 python-docx-template)

使用 Python 和 FastAPI 自動建立 Word 文件(使用 python-docx-template)

Susan Sarandon
Susan Sarandon原創
2025-01-08 07:13:41915瀏覽

Automating Word Document Creation with Python and FastAPI (Using python-docx-template)

需要建立具有動態內容的 Word 文件並自動化該過程? Python 和 python-docx-template 函式庫提供了一個有效的解決方案。 本教學示範如何動態產生Word文檔,無需手動更新。

讓我們用發票範例來說明。 處理來自 API 的資料時,手動更新發票資料既乏味又不切實際。動態生成解決了這個問題。

考慮一個 Word 文件範本:

Automating Word Document Creation with Python and FastAPI (Using python-docx-template)

公司詳細資料和項目清單經常發生變化。 動態生成處理這種可變性。

要實現此目的,請修改 Jinja2 相容性範本。 Jinja2 的模板功能(條件渲染、循環)可根據提供的資料進行動態填充。

Jinja2 相容範本如下圖所示:

Automating Word Document Creation with Python and FastAPI (Using python-docx-template)

Jinja2 語法(例如 {% if %}{% for %})最初可能看起來很複雜,但它提供了強大的控制。 {{ }} 中的表達式表示運行時填充的變數。 例如,{% if items %} 在渲染表行之前檢查 items 變數是否存在。 {% for item in items %} 迭代 items 列表,為每個項目產生一行。

現在,讓我們建立一個 FastAPI 伺服器來使用 Python 渲染模板。

  1. 建立虛擬環境:

    <code class="language-bash">pip3 install virtualenv
    virtualenv -p python3 venv
    source venv/bin/activate</code>
  2. 安裝庫:

    <code class="language-bash">pip install "fastapi[standard]" docx docxtpl pydantic requests</code>
  3. 建立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"}

  4. 匯入 Jinja2 範本:將修改後的 invoice_tpl.docx 放在專案根目錄中。

  5. 增強main.py以下程式碼處理範本渲染、影像取得與總量計算:

    <code class="language-bash">pip3 install virtualenv
    virtualenv -p python3 venv
    source venv/bin/activate</code>
  6. 測試端點:將 JSON 負載(類似原文中的範例)傳送到 / 端點。

  7. 輸出範例:(此處將包含原文中的圖像)

結論:本教學示範了使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn