Заполняем документы в Microsoft Word при помощи Python. Часть 2
Размножаем документы
.
В предыдущем посте было рассмотрено как заполнить запрос в word с помощью python. В этот раз будет продемонстрировано как заполнить сразу несколько word документов данными из таблицы excel.
Перед тем как работать с программой, нам необходимо подготовить файл 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)
Мы создали пустой список, куда в дальнейшем добавляем значения из таблицы. Добавление происходит только, если в ячейке есть какие-то записи (не пустота).
После проделанных манипуляций, внесем собранные данные в шаблон 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')
Теперь сохраненный файл будет иметь название компании-отправителя запроса.
При исполнении программы может возникнуть ошибка:
Эта ошибка связана с тем, что в наименовании компании содержатся кавычки. Если из таблицы excel удалить кавычки, то файл word успешно сохранится с именем Компания-1.docx.
Осталось «размножить» документ, введя остальные данные из таблицы.
Здесь тоже все просто. Создаем цикл по нашим собранным данным:
x=0
while x
В конце цикла «перепрыгиваем» на название столбца с именем компании, чтобы файл word сохранился с правильным наименованием.
Программа готова! Осталось только создать таблицу excel с компаниями, которые находятся на обслуживании.
Скачать готовую программу — здесь.
Скачать таблицу excel с тестовыми данными — здесь.
Шаблон документа word — здесь.