Заполняем документы в Microsoft Word при помощи Python. Часть 2

Размножаем документы

.
В предыдущем посте было рассмотрено как заполнить запрос в word с помощью python. В этот раз будет продемонстрировано как заполнить сразу несколько word документов данными из таблицы excel.

Перед тем как работать с программой, нам необходимо подготовить файл excel, где будут содержаться исходные данные. Создадим файл excel с такими данными или используем готовый:

image

Теперь обратимся к программе.
Так как мы должны считать 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)


Мы создали пустой список, куда в дальнейшем добавляем значения из таблицы. Добавление происходит только, если в ячейке есть какие-то записи (не пустота).

После проделанных манипуляций, внесем собранные данные в шаблон word:

doc = DocxTemplate("шаблон.docx")
    context = { 'emitent' : test[0],'address1' : test[1],'участник' : test[2],'адрес_участника' : test[3],'director' : test[4] }
    doc.render(context)
    doc.save('шаблон-final.docx')


В итоге у нас будет готовый файл word с данными из таблицы. Только вот он один, да и называется шаблон-final. Как потом отличить документы друг от друга?

Начнем с простого. Чтобы сохранять файлы каждый раз под другими именами, необходимо поменять в конце кода на следующее:

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


Теперь сохраненный файл будет иметь название компании-отправителя запроса.

При исполнении программы может возникнуть ошибка:

image

Эта ошибка связана с тем, что в наименовании компании содержатся кавычки. Если из таблицы excel удалить кавычки, то файл word успешно сохранится с именем Компания-1.docx.

Осталось «размножить» документ, введя остальные данные из таблицы.

Здесь тоже все просто. Создаем цикл по нашим собранным данным:

x=0
while x


В конце цикла «перепрыгиваем» на название столбца с именем компании, чтобы файл word сохранился с правильным наименованием.

Программа готова! Осталось только создать таблицу excel с компаниями, которые находятся на обслуживании.

Скачать готовую программу — здесь.

Скачать таблицу excel с тестовыми данными — здесь.

Шаблон документа word — здесь.

© Habrahabr.ru