Для MS Word вы можете использовать docx-mailmerge. Выполните следующие команды для установки lxml (зависимости, необходимой для docx-mailmerge) и docx-mailmerge
conda install lxml
pip install docx-mailmerge
Для правильной работы docx-mailmerge необходимо создать стандартный документ Word и определить соответствующие поля слияния. Ниже приведены примеры для Word 2010. Другие версии Word должны быть похожими. На самом деле мне потребовалось некоторое время, чтобы понять этот процесс, но как только вы сделаете это пару раз, это будет довольно просто.
Запустите Word и создайте базовую структуру документа. Затем поместите курсор в место, куда должны быть вставлены объединенные данные, и выберите «Вставка» -> «Быстрые детали» -> «Поле»:
Word Quick Parts
В диалоговом окне «Поле» выберите «MergeField» в списке «Имена полей». В поле Имя введите имя, которое вы хотите для поля. В этом случае мы используем название компании.
Поле добавления слова
Как только вы нажмете «ОК», вы должны увидеть что-то вроде этого: <> в документе Word. Вы можете создать документ со всеми необходимыми полями.
from __future__ import print_function
from mailmerge import MailMerge
from datetime import date
template = "Practical-Business-Python.docx"
document = MailMerge(template)
document.merge(
status='Gold',
city='Springfield',
phone_number='800-555-5555',
Business='Cool Shoes',
zip='55555',
purchases='$500,000',
shipping_limit='$500',
state='MO',
address='1234 Main Street',
date='{:%d-%b-%Y}'.format(date.today()),
discount='5%',
recipient='Mr. Jones')
document.write('test-output.docx')
Больше на http://pbpython.com/python-word-template.html