我需要操作ODF文件格式(开放文档格式,开放办公室的内部格式),我需要用Python来做。
看起来 ODFPy 是一个很棒的库。不幸的是,官方文档很差,几乎没用。我在网上几乎找不到任何东西——也许它不那么受欢迎?
有没有人可以指出一些信息或更好的文档?
我需要操作ODF文件格式(开放文档格式,开放办公室的内部格式),我需要用Python来做。
看起来 ODFPy 是一个很棒的库。不幸的是,官方文档很差,几乎没用。我在网上几乎找不到任何东西——也许它不那么受欢迎?
有没有人可以指出一些信息或更好的文档?
不幸的是,文档很糟糕,生成的 Python 包装器在代码中记录得很糟糕,提供了许多参数列表看起来像 func(*args) 的函数。
参考手册实际上很有用,但不是在您刚开始时 - 它没有提供如何使用这些功能的任何上下文。我建议从教程和所有示例开始。尽管它们可能与您的用例无关,但它们将帮助您了解软件包的工作原理。在您习惯了包的结构方式之后,您通常可以通过将 API 文档与OpenDocument Essentials书中的信息相结合来理解文档。
(这种关系充其量是有些微弱的,但您通常可以从中直觉方法和属性值。例如,在使用电子表格时,书中方便的 office:value-type 数据列表提供了构建正确的必要常量TableCell(valuetype=...) 实例)
此外,在 OpenOffice 中制作小文档,然后检查 xml 并将其与 ODFPy 生成的 XML 进行比较,极大地帮助您调试可能出错的地方。
在http://mashupguide.net/1.0/html/ch17s04.xhtml有一个很好的 odfpy 用法示例
我在api-for-odfpy.odt中找到了更多文档(该网站在过去几年中进行了重组)。
它已经过时了,有点,但可以帮助某人。我发现只有一种使用 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 产品上打开错误。
好的,这里有一个快速帮助:
获取 odfpy 源代码:
~$ 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
希望有帮助!祝你好运!