Kami menyebarkan dokumen
.
Dalam
posting sebelumnya, kami melihat cara mengisi kueri dalam kata menggunakan python. Kali ini akan diperagakan cara mengisi beberapa dokumen kata sekaligus dengan data dari tabel excel.
Sebelum bekerja dengan program ini, kita perlu menyiapkan file excel, yang akan berisi data sumber. Mari kita buat file excel dengan data seperti itu atau gunakan yang sudah jadi:

Sekarang mari kita beralih ke program.
Karena kita harus membaca file excel, kita perlu mengimpor modul yang sesuai:
import openpyxl
Selanjutnya, kita perlu membaca tabel dan membaca semua data baris demi baris. Ini akan terlihat seperti ini:
test=[] wb = openpyxl.load_workbook('zaprosi.xlsx') sheet=wb.get_active_sheet() for row in sheet['B3':'F7']: for cellObj in row: if cellObj.value==None or cellObj.value==" ": continue
Kami membuat daftar kosong, tempat kami menambahkan nilai dari tabel di masa mendatang. Menambahkan terjadi hanya jika ada entri di dalam sel (tidak batal).
Setelah manipulasi selesai, kami akan menambahkan data yang dikumpulkan ke templat kata:
doc = DocxTemplate(".docx") context = { 'emitent' : test[0],'address1' : test[1],'' : test[2],'_' : test[3],'director' : test[4] } doc.render(context) doc.save('-final.docx')
Sebagai hasilnya, kita akan memiliki file kata selesai dengan data dari tabel. Hanya di sini saja, dan ini disebut final-templat. Lalu bagaimana membedakan dokumen satu sama lain?
Mari kita mulai dengan yang sederhana. Untuk menyimpan file dengan nama yang berbeda setiap kali, Anda perlu mengubah yang berikut di akhir kode:
doc.save(test[x]+'.docx')
Sekarang file yang disimpan akan memiliki nama perusahaan yang mengirimkan permintaan.
Kesalahan dapat terjadi selama eksekusi program:

Kesalahan ini disebabkan oleh fakta bahwa nama perusahaan mengandung tanda kutip. Jika Anda menghapus tanda kutip dari tabel excel, file kata akan berhasil disimpan dengan nama Company-1.docx.
Tetap "menduplikasi" dokumen dengan memasukkan data yang tersisa dari tabel.
Semuanya di sini juga sederhana. Kami membuat siklus sesuai dengan data yang dikumpulkan:
x=0 while x<len(test): doc = DocxTemplate(".docx") context = { 'emitent' : test[x],'address1' : test[x+1],'' : test[x+2],'_' : test[x+3],'director' : test[x+4] } doc.render(context) doc.save(test[x]+'.docx') x+=5
Di akhir siklus, "lompat" ke nama kolom dengan nama perusahaan sehingga file kata disimpan dengan nama yang benar.
Program sudah siap! Tetap hanya untuk membuat tabel excel dengan perusahaan yang berada dalam layanan.
Unduh program yang sudah selesai di
sini .
Unduh tabel excel dengan data uji - di
sini .
Templat dokumen kata ada di
sini .
--- Perbarui --- 11/08/2019
.
Ditambahkan :
- Templat kata dari respons oleh penerima;
- templat permintaan kata telah diperluas dengan jumlah bidang (posisi direktur);
- sekarang dalam tabel Anda dapat mengisi nama perusahaan dengan tanda kutip,
program akan dicerna;
- saat menyimpan file output permintaan, program menyimpan "indah": direktur perusahaan, yang menambah kejelasan ketika bekerja dengan sejumlah besar file;
- saat menyimpan file respons output, program menyimpan: peserta-direktur-kepada siapa mereka menjawab (karena biasanya peserta dapat menjawab beberapa perusahaan sekaligus dan nama file digandakan).
Unduh program permintaan penerima bantuan -
di siniUnduh program jawaban -
di siniUnduh excel spreadsheet dengan data uji -
di siniTemplat kata permintaan penerima -
di siniTemplat jawab kata -
di sini