Как: создавать файлы .doc, используя шаблоны с django / python - PullRequest
3 голосов
/ 19 августа 2010

Я пишу приложение на django, и я кое-что не знаю, как это сделать. Скажем, у вас есть база данных с пользователями и несколько файлов .doc, которые вы, возможно, захотите отправить этим пользователям (почтовые письма, а не в электронном виде). Мне интересно, есть ли способ автоматически создавать эти письма из шаблонов, используя мою базу данных пользователей, чтобы заполнить некоторые маркеры? (т.е. имя, адрес и т. д.)

Я слышал о библиотеке Python "pod", но я никогда не использовал ее. Документация, кажется, говорит, что используют шаблоны openoffice, но мои в формате MS Word. Так как они часто обновляются людьми, которые используют только MS Office, я застрял.

Любая помощь будет оценена.

J.

Ответы [ 2 ]

4 голосов
/ 19 августа 2010

Есть много разных способов сделать это, в зависимости от контекста.Вот некоторые идеи, упорядоченные в порядке убывания сложности:

  • В Microsoft Word есть средство для этого, которое называется Слияние по почте .Вы можете управлять Word из Python, используя COM-хуки, установив pywin32.Это было бы точно так же, как вызов слияния с помощью Microsoft Word.Это должно быть сделано на компьютере Windows с установленным Office, возможно, не на вашем сервере.См. http://bytes.com/topic/python/answers/165364-ms-word-mail-merge-automation, или Google "слияние почты Python".

  • OpenOffice использует Python в качестве макроязыка (я полагаю) и предоставляет API, используя Python-UNO.Вы можете заставить OpenOffice преобразовывать файлы в его формат, а затем использовать pod для выполнения слияния.

  • Вы можете сказать своим пользователям, чтобы они давали вамданные в лучшем формате, например шаблоны OpenOffice.

  • Вы можете экспортировать данные пользователей из Django, передать их людям, пишущим шаблоны, и сообщитьчтобы они делали свои письма самостоятельно.

Что бы вы ни выбрали, это будет непросто.

0 голосов
/ 13 ноября 2017

Использование mailmerge очень просто, и вы можете изменить шаблон из слова doc.

http://pbpython.com/python-word-template.html

Вы также можете включить слияние почты с представлением. Вот пример, где my_template1 - это шаблон документа Word, в котором есть поля с именами и названиями.

def TestDocument2(request):
    template = os.path.join(os.path.dirname(__file__), 
    'templates/my_template1.docx')  

    document = MailMerge(template)
    document.merge(name='testcoy',
               title = 'My title',
               )
    f = io.BytesIO()
    document.write(f)
    length = f.tell()
    f.seek(0)
    response = HttpResponse(
        f.getvalue(),
        content_type='application/vnd.openxmlformats-
        officedocument.wordprocessingml.document'
         )
    response['Content-Disposition'] = 'attachment; filename=example.docx'
    response['Content-Length'] = length
    return response
...