Rumah >pembangunan bahagian belakang >Tutorial Python >Mengautomasikan Penciptaan Dokumen Word dengan Python dan FastAPI (Menggunakan python-docx-template)

Mengautomasikan Penciptaan Dokumen Word dengan Python dan FastAPI (Menggunakan python-docx-template)

Susan Sarandon
Susan Sarandonasal
2025-01-08 07:13:41962semak imbas

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

Perlu mencipta dokumen Word dengan kandungan dinamik dan mengautomasikan proses? Python, dengan perpustakaan python-docx-template, menawarkan penyelesaian yang cekap. Tutorial ini menunjukkan cara menjana dokumen Word secara dinamik, menghapuskan keperluan untuk kemas kini manual.

Mari kita menggambarkan dengan contoh invois. Mengemas kini data invois secara manual adalah membosankan dan tidak praktikal apabila berurusan dengan data daripada API. Penjanaan dinamik menyelesaikan masalah ini.

Pertimbangkan templat dokumen Word:

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

Butiran syarikat dan senarai item kerap berubah. Penjanaan dinamik mengendalikan kebolehubahan ini.

Untuk mencapai ini, ubah suai templat untuk keserasian Jinja2. Ciri templat Jinja2 (pemarahan bersyarat, gelung) membolehkan populasi dinamik berdasarkan data yang disediakan.

Templat yang serasi dengan Jinja2 kelihatan seperti ini:

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

Sintaks Jinja2 (cth., {% if %} dan {% for %}) mungkin kelihatan rumit pada mulanya, tetapi ia memberikan kawalan yang kuat. Ungkapan dalam {{ }} mewakili pembolehubah yang diisi pada masa jalan. Sebagai contoh, {% if items %} menyemak sama ada pembolehubah items wujud sebelum memaparkan baris jadual. {% for item in items %} berulang melalui senarai items, menjana satu baris untuk setiap item.

Sekarang, mari buat pelayan FastAPI untuk memaparkan templat menggunakan Python.

  1. Buat persekitaran maya:

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

    <code class="language-bash">pip install "fastapi[standard]" docx docxtpl pydantic requests</code>
  3. Buat main.py: Mulakan dengan titik akhir FastAPI asas:

    <code class="language-python">from fastapi import FastAPI
    app = FastAPI()
    @app.get("/")
    def read_root():
        return {"Hello": "World"}</code>

    Mengakses localhost:8000 harus kembali {"Hello": "World"}.

  4. Import templat Jinja2: Letakkan invoice_tpl.docx ubah suai anda dalam akar projek.

  5. Tingkatkan main.py: Kod berikut mengendalikan pemaparan templat, pengambilan imej dan pengiraan jumlah:

    <code class="language-bash">pip3 install virtualenv
    virtualenv -p python3 venv
    source venv/bin/activate</code>
  6. Uji titik akhir: Hantar muatan JSON (serupa dengan contoh dalam teks asal) ke titik akhir /.

  7. Contoh output: (Imej daripada teks asal akan disertakan di sini)

Kesimpulan: Tutorial ini menunjukkan penjanaan dokumen Word dinamik menggunakan python-docx-template dan FastAPI. Gabungan Jinja2 dan FastAPI mencipta sistem yang fleksibel untuk mengautomasikan penciptaan dokumen. Catatan blog akan datang (Bahagian 2) akan merangkumi penjanaan PDF.

Repositori: https://www.php.cn/link/1df146af0948a68b1342ce39907668fe

Ikuti Husein Kantarci:

Ingat untuk menggantikan URL imej pemegang tempat dengan URL imej sebenar. Kod ini juga menganggap anda mempunyai model data yang diperlukan ditakrifkan (Syarikat, BankInformation, Item, VatInformation, InvoiceContext) seperti dalam contoh asal.

Atas ialah kandungan terperinci Mengautomasikan Penciptaan Dokumen Word dengan Python dan FastAPI (Menggunakan python-docx-template). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:PERJALANAN PENGEDEPAN HARI)Artikel seterusnya:PERJALANAN PENGEDEPAN HARI)