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:
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:
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.
Buat persekitaran maya:
<code class="language-bash">pip3 install virtualenv virtualenv -p python3 venv source venv/bin/activate</code>
Pasang perpustakaan:
<code class="language-bash">pip install "fastapi[standard]" docx docxtpl pydantic requests</code>
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"}
.
Import templat Jinja2: Letakkan invoice_tpl.docx
ubah suai anda dalam akar projek.
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>
Uji titik akhir: Hantar muatan JSON (serupa dengan contoh dalam teks asal) ke titik akhir /
.
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!