ODFPy文档[关闭]

问题描述 投票:19回答:6

我需要操作ODF文件格式(打开文档格式,开放式办公室的内部格式),我需要在Python中进行操作。

看起来ODFPy是一个很棒的图书馆。不幸的是,官方文档很差,几乎没用。我在网上几乎找不到任何东西 - 也许它不是那么受欢迎?

有没有人可以指点我一些信息或更好的文件?

python openoffice.org odf odfpy
6个回答
13
投票

遗憾的是,文档很糟糕,生成的Python包装器在代码中很糟糕,提供了许多函数,其参数列表看起来像func(* args)。

参考手册实际上很有用,但是当你刚开始时它没有 - 它没有提供如何使用这些功能的任何上下文。我建议从tutorial和所有examples开始。即使它们可能与您的用例无关,它们也可以帮助您了解包的工作原理。在您习惯了包的结构方式之后,您通常可以通过将API文档与OpenDocument Essentials书中的信息相结合来理解文档。

(这种关系在某种程度上是微不足道的,但是你可以经常直接从中获取方法和属性值。例如,当使用电子表格时,书中的办公室:值类型数据的方便列表提供了构建适当的必要常量。 TableCell(valuetype = ...)实例)

此外,在OpenOffice中创建小文档,然后检查xml并将其与从ODFPy生成的XML进行比较,可以帮助您调试可能出错的位置。


5
投票

有一个很好的例子,在http://mashupguide.net/1.0/html/ch17s04.xhtml使用odfpy


3
投票

我在api-for-odfpy.odt找到了更多的文档(网站已在过去几年中进行了重组)。


2
投票

它已经过时了一点,但可以帮助别人。我发现只有一种方法可以使用ODFPY:

  1. 生成您的ODF文档(即f1.ods)
  2. 复制它并在LibreOffice / OpenOffice或其他(即f2.odf)中编辑
  3. 将两个文件更改为f1.zip和f2.zip
  4. 提取两个文件。

主格式和数据位于“content.xml”和“styles.xml”中

  1. 比较两种格式
  2. 在python脚本中进行更改
  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产品上打开了错误。


1
投票

尝试ezodf他们也有一个doc


-1
投票

好的,这是一个快速的帮助:

  1. 抓住odfpy源代码: ~$ svn checkout https://svn.forge.osor.eu/svn/odfpy/trunk odfpy
  2. 安装它: ~$ cd odfpy ~/odfpy$ python setup.py install
  3. 生成文档: ~/odfpy$ epydoc --pdf odf 我上传了生成的文档here
  4. 运行这个简单的示例程序: 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)
  5. 阅读示例并尝试理解所有内容: ~/odfpy$ emacs examples/*.py

希望有所帮助!祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.