Подтвердить что ты не робот

Документация ODFPy

Мне нужно манипулировать файлом формата ODF (формат открытого документа, внутренний формат открытого офиса), и мне нужно сделать это на Python.

Кажется, ODFPy - замечательная библиотека для этой цели. К сожалению, официальная документация очень бедна, почти непривычна. Я не могу найти ничего в Интернете - может быть, это не так популярно?

Есть ли кто-нибудь, кто может указать мне какую-то информацию или лучшую документацию?

4b9b3361

Ответ 1

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

Справочное руководство действительно полезно, но не тогда, когда вы начинаете - это не дает никакого контекста того, как использовать эти функции. Я предлагаю начать с tutorial и все examples. Несмотря на то, что они могут не иметь никакого отношения к вашему случаю использования, они помогут вам понять, как работает пакет. После того, как вы привыкли к тому, как структурирован пакет, вы часто можете понять документацию, объединив документ API с информацией в OpenDocument Essentials.

(В лучшем случае соотношение несколько незначительное, но вы можете часто вводить в него метод и значения атрибутов. При работе с электронной таблицей, например, удобный список офисных данных: данные типа значения в книге обеспечивали необходимые константы для создания правильных экземпляров TableCell (valuetype =...))

Кроме того, создание небольших документов в OpenOffice, а затем проверка xml и сравнение их с XML, сгенерированным из ODFPy, значительно облегчает вам отладку, где вы могли ошибиться.

Ответ 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"

  1. сравнить оба форматирования
  2. внести изменения в python script
  3. итерации 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
    

Надеюсь, что это поможет! Удачи!