我需要操作ODF文件格式(打开文档格式,开放式办公室的内部格式),我需要用Python来完成。
看起来ODFPy是一个很棒的图书馆。不幸的是,官方文档很差,几乎没用。我在网上几乎找不到任何东西 - 也许它不是那么受欢迎?
是否有人可以向我提供一些信息或更好的文档?
答案 0 :(得分:12)
遗憾的是,文档非常糟糕,生成的Python包装器在代码中很糟糕,提供了许多函数,其参数列表看起来像func(* args)。
参考手册 实际上很有用,但是当你刚开始时却没有 - 它没有提供如何使用这些功能的任何上下文。我建议从tutorial和所有examples开始。即使他们可能没有与您的用例有关,但它们将帮助您了解包的工作原理。在您习惯了程序包的构建方式后,您可以通过将API文档与OpenDocument Essentials书中的信息相结合来理解文档。
(这种关系在某种程度上是微不足道的,但是你可以经常直接从中获取方法和属性值。例如,当使用电子表格时,书中的办公室:值类型数据的方便列表提供了必要的常量用于构建适当的TableCell(valuetype = ...)实例)
此外,在OpenOffice中创建小文档,然后检查xml并将其与从ODFPy生成的XML进行比较,可以帮助您调试可能出错的位置。
答案 1 :(得分:5)
答案 2 :(得分:2)
我在api-for-odfpy.odt找到了更多文档(网站已在过去几年内进行了重组)。
答案 3 :(得分:1)
答案 4 :(得分:1)
它已经过时了,但可以帮助某人。 我发现只有一种方法可以使用ODFPY:
主格式和数据位于“content.xml”和“styles.xml”
这是一些日期时间格式示例,我已经这样做了:
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产品上打开了错误。
答案 5 :(得分:-1)
好的,这是一个快速的帮助:
抓住odfpy源代码:
~$ svn checkout https://svn.forge.osor.eu/svn/odfpy/trunk odfpy
安装它:
~$ cd odfpy
~/odfpy$ python setup.py install
生成文档:
~/odfpy$ epydoc --pdf odf
我已上传生成的文档here。
运行这个简单的示例程序:
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
希望有所帮助!祝你好运!