Как я могу создать документ Word с помощью Python?

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

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

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


person Huuuze    schedule 23.06.2009    source источник


Ответы (5)


Несколько способов создания документов Word с помощью Python:

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

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

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

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

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

person codeape    schedule 23.06.2009
comment
Вау, вы нашли 2 из 3 идей, о которых я хотел сказать (COM и RTF). Спасибо, что сэкономили мне время. :) - person Kevin Crumley; 24.06.2009
comment
+1 за предложение .RTF вместо .DOC - person Hardwareguy; 24.06.2009
comment
К сожалению, требуется .doc. Нет РТФ. - person Huuuze; 24.06.2009

Я успешно попробовал python-docx, он позволяет создавать и редактировать docx в Python.

person mbk    schedule 08.11.2011
comment
Чтобы привлечь больше внимания, когда вы отвечаете на вопрос, может быть хорошей идеей включить некоторый пример кода, даже если он связан только с той ссылкой, которую вы предоставили. - person Jakob Bowyer; 08.11.2011
comment
@mbk Я не смог найти учебник по созданию документа с этой библиотекой. - person Volatil3; 12.09.2013
comment
@Volatil3 На странице есть пример, вот прямой ссылка - person mbk; 31.10.2013
comment
Вот дополнительная документация по python-docx с несколькими полезными примерами: https://python-docx.readthedocs.io/en/latest/. Я обнаружил, что это очень полезно. - person LMc; 25.10.2016

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

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

person Kevin Crumley    schedule 23.06.2009

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

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

person Community    schedule 16.07.2009

Можете ли вы записать его в виде XML-файлов WordML и заархивировать в формате .docx? Все, что нужно вашему клиенту, — это фильтр Word 2007, если он еще не использует Office 2007.

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

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

person lavinio    schedule 23.06.2009
comment
К сожалению, этот вариант не идеален. Насколько я могу судить, мне нужно преобразовать мои данные в WordML, чтобы сохранить форматирование документа. - person Huuuze; 24.06.2009