ODFPy文档

时间:2009-06-04 08:03:42

标签: python openoffice.org odf odfpy

我需要操作ODF文件格式(打开文档格式,开放式办公室的内部格式),我需要用Python来完成。

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

是否有人可以向我提供一些信息或更好的文档?

6 个答案:

答案 0 :(得分:12)

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

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

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

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

答案 1 :(得分:5)

http://mashupguide.net/1.0/html/ch17s04.xhtml

上有一个很好的使用odfpy的例子

答案 2 :(得分:2)

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

答案 3 :(得分:1)

尝试ezodf 他们也有一个doc

答案 4 :(得分:1)

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

  1. 生成您的ODF文件(即f1.ods)
  2. 复制它并在LibreOffice / OpenOffice或其他(即f2.odf)中进行编辑
  3. 将两个文件都更改为f1.zip和f2.zip
  4. 提取两个文件。
  5. 主格式和数据位于“content.xml”和“styles.xml”

    1. 比较两种格式
    2. 在python脚本中进行更改
    3. 迭代1-7直到你有足够的结果:D:D
    4. 这是一些日期时间格式示例,我已经这样做了:

      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)

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

  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
    
  6. 希望有所帮助!祝你好运!