Документация ODFPy
Мне нужно манипулировать файлом формата ODF (формат открытого документа, внутренний формат открытого офиса), и мне нужно сделать это на Python.
Кажется, ODFPy - замечательная библиотека для этой цели. К сожалению, официальная документация очень бедна, почти непривычна. Я не могу найти ничего в Интернете - может быть, это не так популярно?
Есть ли кто-нибудь, кто может указать мне какую-то информацию или лучшую документацию?
Ответы
Ответ 1
Документация, к сожалению, ужасна, и сгенерированная оболочка Python была задокументирована в коде, предоставляя множество функций, списки аргументов которых выглядят как func (* args).
Справочное руководство действительно полезно, но не тогда, когда вы начинаете - это не дает никакого контекста того, как использовать эти функции. Я предлагаю начать с tutorial и все examples. Несмотря на то, что они могут не иметь никакого отношения к вашему случаю использования, они помогут вам понять, как работает пакет. После того, как вы привыкли к тому, как структурирован пакет, вы часто можете понять документацию, объединив документ API с информацией в OpenDocument Essentials.
(В лучшем случае соотношение несколько незначительное, но вы можете часто вводить в него метод и значения атрибутов. При работе с электронной таблицей, например, удобный список офисных данных: данные типа значения в книге обеспечивали необходимые константы для создания правильных экземпляров TableCell (valuetype =...))
Кроме того, создание небольших документов в OpenOffice, а затем проверка xml и сравнение их с XML, сгенерированным из ODFPy, значительно облегчает вам отладку, где вы могли ошибиться.
Ответ 2
Хороший пример использования odfpy в http://mashupguide.net/1.0/html/ch17s04.xhtml
Ответ 3
Я нашел дополнительную документацию (веб-сайт был реорганизован за последние несколько лет) в api-for-odfpy.odt.
Ответ 4
попробуйте ezodf
они также имеют doc
Ответ 5
Он устарел, немного, но может помочь кому-то.
Я нашел только один способ работы с ODFPY:
- сгенерируйте ваш документ ODF (т.е. f1.ods)
- сделать копию и редактировать в LibreOffice/OpenOffice или другой (т.е. f2.odf)
- измените оба файла на f1.zip и f2.zip
- извлеките оба файла.
Основное форматирование и данные находятся в "content.xml" и "styles.xml"
- сравнить оба форматирования
- внести изменения в python script
- итерации 1-7, пока у вас не будет достаточного результата: D: D
Вот пример формата даты и времени, я сделал так:
from odf.opendocument import OpenDocumentSpreadsheet
from odf.style import Style, TableCellProperties
from odf.number import DateStyle, Text, Year, Month, Day, Hours, Minutes, Seconds
from odf.text import P
from odf.table import Table, TableRow, TableCell
# Generate document object
doc = OpenDocumentSpreadsheet()
table = Table(name="Exported data")
#create custom format in styles.xml
date_style = DateStyle(name="date-style1") #, language="lv", country="LV")
date_style.addElement(Year(style="long"))
date_style.addElement(Text(text=u"-"))
date_style.addElement(Month(style="long"))
date_style.addElement(Text(text=u"-"))
date_style.addElement(Day(style="long"))
date_style.addElement(Text(text=u" "))
date_style.addElement(Hours(style="long"))
date_style.addElement(Text(text=u":"))
date_style.addElement(Minutes(style="long"))
date_style.addElement(Text(text=u":"))
date_style.addElement(Seconds(style="long", decimalplaces="3"))
doc.styles.addElement(date_style)
#link to generated style from content.xml
ds = Style(name="ds1", datastylename="date-style1",parentstylename="Default", family="table-cell")
doc.automaticstyles.addElement(ds)
#create simple cell
tr = TableRow()
tc = TableCell(valuetype='string')
tc.addElement(P(text = "Date-Time"))
tr.addElement(tc)
table.addElement(tr)
#create cell with custom formatting
lineDT = #some date-time variable
tr = TableRow()
tc = TableCell(valuetype='date',datevalue = lineDT.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3],stylename=ds)
tc.addElement(P(text=lineDT.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]))
tr.addElement(tc)
table.addElement(tr)
#save ods
doc.spreadsheet.addElement(table)
doc.save("test.ods", True)
Я немного обновил код, потому что предыдущая версия открылась неправильно в продуктах MS.
Ответ 6
Хорошо, вот быстрая помощь:
-
Возьмите неподходящий исходный код:
~$ svn checkout https://svn.forge.osor.eu/svn/odfpy/trunk odfpy
-
Установите его:
~$ cd odfpy
~/odfpy$ python setup.py install
-
Создайте документацию:
~/odfpy$ epydoc --pdf odf
Я загрузил сгенерированную документацию здесь.
-
Запустите эту простую примерную программу:
from odf.opendocument import OpenDocumentText
from odf.text import P
textdoc = OpenDocumentText()
p = P(text="Hello World!")
textdoc.text.addElement(p)
textdoc.save("helloworld", True)
-
Прочтите примеры и попытайтесь понять все:
~/odfpy$ emacs examples/*.py
Надеюсь, что это поможет! Удачи!