Heim >Backend-Entwicklung >Python-Tutorial >Automatisieren der Erstellung von Word-Dokumenten mit Python und FastAPI (mit python-docx-template)
Müssen Sie Word-Dokumente mit dynamischen Inhalten erstellen und den Prozess automatisieren? Python bietet mit der python-docx-template
-Bibliothek eine effiziente Lösung. Dieses Tutorial zeigt, wie Sie Word-Dokumente dynamisch generieren, sodass keine manuellen Aktualisierungen erforderlich sind.
Lassen Sie uns dies anhand eines Rechnungsbeispiels veranschaulichen. Das manuelle Aktualisieren von Rechnungsdaten ist beim Umgang mit Daten aus APIs mühsam und unpraktisch. Die dynamische Generierung löst dieses Problem.
Erwägen Sie eine Word-Dokumentvorlage:
Firmendetails und Artikellisten ändern sich häufig. Die dynamische Generierung bewältigt diese Variabilität.
Um dies zu erreichen, ändern Sie die Vorlage für Jinja2-Kompatibilität. Die Vorlagenfunktionen von Jinja2 (bedingtes Rendern, Schleifen) ermöglichen eine dynamische Auffüllung basierend auf den bereitgestellten Daten.
Die Jinja2-kompatible Vorlage sieht so aus:
Die Jinja2-Syntax (z. B. {% if %}
und {% for %}
) mag zunächst komplex erscheinen, bietet aber eine leistungsstarke Kontrolle. Ausdrücke innerhalb von {{ }}
stellen Variablen dar, die zur Laufzeit gefüllt werden. Beispielsweise prüft {% if items %}
, ob die Variable items
vorhanden ist, bevor Tabellenzeilen gerendert werden. {% for item in items %}
durchläuft die items
-Liste und generiert eine Zeile für jedes Element.
Jetzt erstellen wir einen FastAPI-Server, um die Vorlage mit Python zu rendern.
Erstellen Sie eine virtuelle Umgebung:
<code class="language-bash">pip3 install virtualenv virtualenv -p python3 venv source venv/bin/activate</code>
Bibliotheken installieren:
<code class="language-bash">pip install "fastapi[standard]" docx docxtpl pydantic requests</code>
Erstellen Sie main.py
: Beginnen Sie mit einem einfachen FastAPI-Endpunkt:
<code class="language-python">from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"}</code>
Der Zugriff auf localhost:8000
sollte {"Hello": "World"}
zurückgeben.
Importieren Sie die Jinja2-Vorlage: Platzieren Sie Ihr geändertes invoice_tpl.docx
im Projektstamm.
Verbesserung main.py
: Der folgende Code übernimmt das Rendern der Vorlage, das Abrufen von Bildern und die Berechnung der Gesamtmenge:
<code class="language-bash">pip3 install virtualenv virtualenv -p python3 venv source venv/bin/activate</code>
Endpunkt testen: Senden Sie eine JSON-Nutzlast (ähnlich dem Beispiel im Originaltext) an den /
Endpunkt.
Ausgabebeispiele: (Bilder aus dem Originaltext würden hier eingefügt)
Fazit: Dieses Tutorial demonstriert die dynamische Erstellung von Word-Dokumenten mit python-docx-template
und FastAPI. Durch die Kombination von Jinja2 und FastAPI entsteht ein flexibles System zur Automatisierung der Dokumentenerstellung. Ein zukünftiger Blogbeitrag (Teil 2) wird sich mit der PDF-Generierung befassen.
Repository: https://www.php.cn/link/1df146af0948a68b1342ce39907668fe
Folgen Sie Husein Kantarci:
Denken Sie daran, die Platzhalter-Bild-URLs durch tatsächliche Bild-URLs zu ersetzen. Der Code geht außerdem davon aus, dass Sie die erforderlichen Datenmodelle definiert haben (Company, BankInformation, Item, VatInformation, InvoiceContext) wie im Originalbeispiel.
Das obige ist der detaillierte Inhalt vonAutomatisieren der Erstellung von Word-Dokumenten mit Python und FastAPI (mit python-docx-template). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!