Форматированный вывод в OpenOffice / Microsoft Word с Python - PullRequest
6 голосов
/ 28 мая 2009

Я работаю над проектом (на Python), который требует форматированного, редактируемого вывода. Поскольку конечный пользователь не будет технически опытным, вывод должен быть в редактируемом текстовом редакторе. Форматирование является сложным (маркеры, абзацы, жирный шрифт и т. Д.).

Есть ли способ создать такой отчет с помощью Python? Я чувствую, что должен быть способ сделать это, используя шаблоны Microsoft Word / OpenOffice и Python, но я не могу найти ничего достаточно продвинутого, чтобы получить хорошее форматирование. Есть предложения?

Ответы [ 7 ]

3 голосов
/ 28 мая 2009

Малоизвестный и слегка зловещий факт: если вы создадите файл HTML и добавите в него расширение .doc, Word откроет его как документ Word, и большинство пользователей не станут мудрее.

За исключением, может быть, очень технический человек скажет, мой это маленький файл Word! :)

2 голосов
/ 27 января 2011

Для этого используйте модуль Python Docx - 100% Python, таблицы, изображения, свойства документа, заголовки, абзацы и т. Д.

2 голосов
/ 28 мая 2009

"Сложное форматирование (маркеры, абзацы, жирный шрифт и т. Д.)"

Использование RST .

Создать тривиально, так как это простой текст.

Редактировать тривиально, поскольку это простой текст с несколькими дополнительными символами для предоставления структурной информации.

Хорошо форматируется с помощью набора инструментов .

1 голос
/ 04 октября 2012

Вы можете использовать QTextDocument, QTextCursor и QTextDocumentWriter в PyQt4 . Простой пример, показывающий, как записать в файл odt:

>>>from pyqt4 import QtGui
# Create a document object
>>>doc = QtGui.QTextDocument()
# Create a cursor pointing to the beginning of the document
>>>cursor = QtGui.QTextCursor(doc)
# Insert some text
>>>cursor.insertText('Hello world')
# Create a writer to save the document
>>>writer = QtGui.QTextDocumentWriter()
>>>writer.supportedDocumentFormats()
[PyQt4.QtCore.QByteArray(b'HTML'), PyQt4.QtCore.QByteArray(b'ODF'), PyQt4.QtCore.QByteArray(b'plaintext')]
>>>odf_format = writer.supportedDocumentFormats()[1]
>>>writer.setFormat(odf_format)
>>>writer.setFileName('hello_world.odt')
>>>writer.write(doc) # Return True if successful
True

QTextCursor также может вставлять таблицы, кадры, блоки, изображения. Больше информации на: http://qt -project.org / док / кварта-4,8 / qtextcursor.html

В качестве бонуса вы также можете распечатать в PDF-файл с помощью QPrinter.

1 голос
/ 28 мая 2009

Я использовал xlwt для создания документов Excel с использованием python, но мне еще не нужно было писать файлы Word. Я нашел этот пакет, OOoPy , но я не использовал его.

Также вы можете попробовать вывести html-файлы и открыть пользователям их в Word.

1 голос
/ 28 мая 2009

Я знаю, что есть odtwriter для документов . Вы можете сгенерировать свой вывод как reStructuredText и передать его в odtwriter или посмотреть, что odtwriter использует в бэкэнде для генерации ODT и использовать его.

(Я бы, вероятно, пошел с генерацией первого вывода, а затем со взломом odtwriter для вывода нужного материала (и внесения исправлений обратно в проект), потому что это, вероятно, намного проще, чем пытаться визуализировать ваши вещи напрямую в ODT .)

0 голосов
/ 28 мая 2009

Я думаю, что OpenOffice имеет некоторые привязки Python - вы должны быть в состоянии написать макросы OO на Python.

Но я бы вместо этого использовал HTML - Word и OO.org довольно хороши в редактировании, и вы можете легко написать его из Python (хотя Word экономит много беспорядка, который может усложнить синтаксический анализ вашим приложением Python).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...