Вопрос по xml, python – Как я могу создать документ Word, используя Python?

36

Я хотел бы создать документ Word с использованием Python, однако я хочу повторно использовать как можно большую часть моего существующего кода для создания документов. В настоящее время я использую XSLT для создания файла HTML, который япрограммно конвертировать в файл PDF. Однако мой клиент теперь запрашивает, чтобы тот же документ был доступен в формате Word (.doc).

До сих пор мне не очень повезло найти какие-либо решения этой проблемы. Кто-нибудь знает о библиотеке с открытым исходным кодом (или * gulp * проприетарное решение), которая может помочь решить эту проблему?

ПРИМЕЧАНИЕ. Все возможные решения должны работать в Linux. Я считаю, что это устраняет pywin32.

Ваш Ответ

5   ответов
22

питон-DOCX с успехом, он позволяет вам создавать и редактировать документы в Python

Вот некоторая дополнительная документация по python-docx, в которой есть несколько полезных примеров:https://python-docx.readthedocs.io/en/latest/, Я нашел это очень полезным.
@ Volatil3 На странице есть пример, вот прямойlink
Чтобы получить больше внимания при ответе на вопрос, было бы неплохо добавить пример кода, даже если он связан только с той ссылкой, которую вы указали.
@mbk Я не смог найти учебник по созданию документа с этой библиотекой
2

far больше ручной работы, чем я хочу, но документы, созданные с помощью pyRTF, приводили к сбою Word и OpenOffice, и у меня не было мотивации, чтобы попытаться это выяснить.

Мне показалось, что проще всего (но не идеально) создать шаблон документа Word с нужными мне стилями. Затем мой Python создает файл HTML, чей<p> стили помечены после стилей Word. Затем я открываю файл HTML в Word и открываю шаблон в Word. Я вырезал и вставлял весь текст из файла HTML в шаблон, и Word переформатировал его в соответствии со стилями, которые я установил ранее. Это работает для случайного файла в моей ситуации. Это может не сработать для вашей ситуации. FYI.

36

Use COM automation to create a document using the MS Word object model (using pywin32). http://python.net/crew/pirx/spam7/ Automate OpenOffice using Python: http://wiki.services.openoffice.org/wiki/Python If rtf format is OK, use the PyRTF library: http://pyrtf.sourceforge.net/

РЕДАКТИРОВАТЬ:

Поскольку о COM не может быть и речи, я предлагаю следующее (на основе ответа @ kcrumley):

Используя библиотеку UNO для автоматизации Open Office из python, откройте файл HTML в OOWriter, затем сохраните как .doc.

EDIT2:

Там теперь чистый Питонпроект python-docx это выглядит красиво (я не использовал его).

К сожалению, .doc требуется. Нет RTF. Huuuze
+1 за проект docx
Ух ты, ты ударил 2 из тех же 3 идей, которые я собирался сказать (COM и RTF) Спасибо, что сэкономили мне время. :)
+1 за предложение .RTF вместо .DOC
0

ат .docx? Все, что нужно вашему клиенту, - это фильтр Word 2007, если он еще не установлен в Office 2007.

Есть много примеров там.

Вы также можете загрузить XML непосредственно в Word, начиная с 2003 года, илитак мне сказали.

К сожалению, этот вариант не идеален. Из того, что я могу сказать, мне нужно преобразовать мои данные в WordML, чтобы сохранить форматирование документа. Huuuze
2

1) Если вы хотите просто сделать еще один шаг в конце вашего текущего конвейера, есть несколько вариантов конвертации файлов PDF в файлы Word.123PDFConverter, но редакторы CNET рекомендуют это (та же ссылка); у него есть бесплатная пробная версия; и это поддерживает автоматизацию. Как и для любого стороннего конвертера файлов, ваш пробег может варьироваться в зависимости от сложности ваших PDF-файлов и от того, насколько хороша программа на самом деле.

2) Основываясь на предложении Codeape по автоматизации COM, если вы COM автоматизируете Word, вы можете открыть свой фактический HTML-файл в Word и вызвать «Сохранить как». команда, чтобы сохранить его как файл DOC.

Похожие вопросы