Есть ли простой способ написать ODT с использованием Python? - PullRequest
6 голосов
/ 02 апреля 2011

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

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

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

Ответы [ 2 ]

7 голосов
/ 02 апреля 2011

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

Это на самом деле просто, но для правильной работы ElementTree с пространствами имен XML. (это плохо документировано) Но это можно сделать. У меня нет примера, извините.

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

Для редактирования файлов 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 / док / кварта-4,8 / qtextcursor.html

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

...