Heim >Backend-Entwicklung >Python-Tutorial >Automatisieren der Erstellung von Word-Dokumenten mit Python und FastAPI (mit python-docx-template)

Automatisieren der Erstellung von Word-Dokumenten mit Python und FastAPI (mit python-docx-template)

Susan Sarandon
Susan SarandonOriginal
2025-01-08 07:13:41962Durchsuche

Automating Word Document Creation with Python and FastAPI (Using 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:

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

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:

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

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.

  1. Erstellen Sie eine virtuelle Umgebung:

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

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

  4. Importieren Sie die Jinja2-Vorlage: Platzieren Sie Ihr geändertes invoice_tpl.docx im Projektstamm.

  5. 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>
  6. Endpunkt testen: Senden Sie eine JSON-Nutzlast (ähnlich dem Beispiel im Originaltext) an den / Endpunkt.

  7. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:TAG CODIERUNG REISE)Nächster Artikel:TAG CODIERUNG REISE)