08.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

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

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

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

Читать>>




Экспериментальная функция:

Ниже вы видите текст статьи по ссылке. По нему можно быстро понять ссылка достойна прочтения или нет

Просим обратить внимание, что текст по ссылке и здесь может не совпадать.

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

.

В предыдущем

посте

было рассмотрено как заполнить запрос в 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<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

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

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

Скачать готовую программу –

здесь

.

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

здесь

.

Шаблон документа word –

здесь

.





Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus