Есть ли простой способ написать ODT с помощью Python?

моя точка зрения заключается в том, что помощью pod (из Appy framework, который является болью для меня) или OpenOffice UNO мост, который, кажется, скоро устареет, и для этого требуется OOo.org для запуска при запуске моего скрипта это не довлетворительно.

может ли кто-нибудь указать мне на аккуратный способ создания простого, но чистого ODT (таблицы-мой приоритет) без необходимости кодировать его снова и снова ?

edit: я даю попробовать к ODFpy это, кажется, делает то, что мне нужно, подробнее об этом позже.

2 ответов


ваш пробег с odfpy может отличаться. Мне это не понравилось - я в конечном итоге использовал шаблон ODT, созданный в OpenOffice, оппенинг содержимое.xml с ziplib и elementtree, и обновление этого. (В вашем случае он создаст только соответствующие строки таблицы и узлы ячеек таблицы), а затем запишет все обратно.

Это на самом деле просто, но для того, чтобы ElementTree правильно работал с пространствами имен XML. (это плохо documente), но это можно сделать. У меня нет примера, извиняюсь.


для редактирования файлов odt мой ответ может не помочь, но если вы хотите создать новые файлы odt, вы можете использовать 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/doc/qt-4.8/qtextcursor.html

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