املأ المستندات في Microsoft Word باستخدام Python. الجزء 2

ننشر الوثائق

.
في منشور سابق ، نظرنا في كيفية ملء استعلام بالكلمة باستخدام python. هذه المرة سيتم توضيح كيفية ملء عدة مستندات كلمة في وقت واحد مع البيانات من جدول اكسل.

قبل العمل مع البرنامج ، نحتاج إلى إعداد ملف excel ، والذي سيحتوي على البيانات المصدر. لنقم بإنشاء ملف excel باستخدام هذه البيانات أو استخدام ملف جاهز:

صورة

الآن دعنا ننتقل إلى البرنامج.

نظرًا لأنه يجب علينا قراءة ملف excel ، نحتاج إلى استيراد الوحدة النمطية المقابلة:

import openpyxl 

بعد ذلك ، نحتاج إلى الاطلاع على الجدول وقراءة جميع البيانات بسطر. سيبدو مثل هذا:

 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 #print(cellObj.value) test.append(cellObj.value) 

أنشأنا قائمة فارغة ، حيث نضيف القيم من الجدول في المستقبل. تحدث الإضافة فقط إذا كان هناك أي إدخالات في الخلية (وليس باطلة).

بعد التلاعب به ، سنضيف البيانات التي تم جمعها إلى قالب الكلمة:

 doc = DocxTemplate(".docx") context = { 'emitent' : test[0],'address1' : test[1],'' : test[2],'_' : test[3],'director' : test[4] } doc.render(context) doc.save('-final.docx') 

نتيجة لذلك ، سيكون لدينا ملف كلمة منتهي مع بيانات من الجدول. هنا فقط هو وحده ، ويطلق عليه القالب النهائي. كيف إذن أن نميز الوثائق عن بعضها البعض؟

لنبدأ مع واحد بسيط. لحفظ الملفات تحت أسماء مختلفة في كل مرة ، تحتاج إلى تغيير ما يلي في نهاية التعليمات البرمجية:

 doc.save(test[x]+'.docx') 

الآن سيكون للملف المحفوظ اسم الشركة التي ترسل الطلب.

قد يحدث خطأ أثناء تنفيذ البرنامج:

صورة

يرجع هذا الخطأ إلى حقيقة أن اسم الشركة يحتوي على علامات اقتباس. إذا قمت بإزالة علامات الاقتباس من جدول excel ، فسيتم حفظ ملف الكلمة بنجاح باسم Company-1.docx.

يبقى "تكرار" المستند عن طريق إدخال البيانات المتبقية من الجدول.

كل شيء هنا بسيط أيضا. نقوم بإنشاء دورة وفقًا للبيانات التي تم جمعها:

 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 

في نهاية الدورة ، "القفز" إلى اسم العمود مع اسم الشركة بحيث يتم حفظ ملف الكلمة بالاسم الصحيح.

البرنامج جاهز! يبقى فقط لإنشاء جدول excel مع الشركات التي تعمل.

قم بتنزيل البرنامج النهائي هنا .

قم بتنزيل جدول excel مع بيانات الاختبار - هنا .

قالب مستند الكلمة هنا .

--- تحديث --- 11/08/2019

.
أضيفت :
- قالب كلمة استجابة المستفيد ؛
- تم توسيع قالب طلب الكلمة بعدد الحقول (منصب المدير) ؛
- الآن في الجدول ، يمكنك ملء أسماء الشركات بالاقتباسات ،
البرنامج سوف يهضم.
- عند حفظ ملفات مخرجات الطلبات ، يحفظ البرنامج "بشكل جميل": مدير الشركة ، مما يضيف الوضوح عند العمل مع عدد كبير من الملفات ؛
- عند حفظ ملفات استجابة المخرجات ، يحفظ البرنامج: المشارك والمدير الذي أجاب عليه (حيث يمكن للمشارك عادة الإجابة على العديد من الشركات في وقت واحد وتكرار أسماء الملفات).

قم بتنزيل برنامج طلب المستفيد - هنا
قم بتنزيل برنامج الإجابات - هنا
قم بتنزيل جدول بيانات Excel مع بيانات الاختبار - هنا
طلب كلمة قالب المستفيد - هنا
قالب الإجابة كلمة - هنا

Source: https://habr.com/ru/post/ar459152/


All Articles