Documentation ODFPy [fermé]

je dois manipuler le format de fichier ODF (open document format, le format interne de l'Office), et je dois le faire en Python.

il semble que ODFPy est une bibliothèque merveilleuse à cet effet. Malheureusement, la documentation officielle est très mauvais, presque inutile. Je ne peux pas trouver presque tout en ligne - peut-être qu'il n'est pas si populaire?

y a-t-il quelqu'un qui puisse m'indiquer quelques informations ou une meilleure documentation?

17
demandé sur Community 2009-06-04 12:03:41

6 réponses

la documentation est malheureusement horrible, et L'enveloppe Python générée est lousily documentée en code, fournissant beaucoup de fonctions dont les listes d'arguments ressemblent à func(*args).

Le manuel de référence en fait utile, mais pas quand vous démarrez - il ne fournit aucun contexte sur la façon d'utiliser ces fonctions. Je suggère de commencer avec le tutoriel et tous les exemples. Même s'ils ont rien pour ce qui est de votre dossier d'utilisation, ils vous aideront à vous familiariser avec le fonctionnement du paquet. Après vous être habitué à la manière dont le paquet est structuré, vous pouvez souvent donner un sens à la documentation en combinant L'API doc avec les informations dans le OpenDocument Essentials livre.

(la relation est plutôt ténue au mieux, mais on peut souvent en déduire des valeurs de méthode et d'attribut. En travaillant avec le tableur, par exemple, le liste pratique de bureau:les données de valeur-type dans le livre ont fourni les constantes nécessaires pour construire la nappe appropriée(valuetype=...))

aussi, faire de petits documents dans OpenOffice Puis inspecter le xml et le comparer au XML généré par ODFPy vous aide grandement à déboguer là où vous avez pu vous tromper.

12
répondu Nick Bastin 2016-02-04 17:01:41

Il y a un bon exemple de odfpy l'utilisation de http://mashupguide.net/1.0/html/ch17s04.xhtml

5
répondu mrmagooey 2013-10-25 06:59:24

j'ai trouvé plus de documentation (le site web a été réorganisé au cours des dernières années) en api-pour-odfpy.odt.

2
répondu user1928764 2012-12-25 22:27:56

ezodf ils ont aussi un doc

1
répondu yvess 2012-09-26 07:19:17

c'est un peu dépassé, mais ça pourrait aider quelqu'un. Je n'ai trouvé qu'une seule façon de travailler avec ODFPY:

  1. générer votre document ODF (c.-à-d. f1.ods)
  2. faites une copie de celui-ci et éditez dans LibreOffice/OpenOffice ou autre (i.e. f2.odf)
  3. changez les deux fichiers en f1.zip et f2.zip
  4. extraire les deux fichiers.

le formatage principal et les données se trouvent dans "content.xml" et "styles.xml"

  1. comparez les deux mise en forme
  2. faire des modifications dans le script python
  3. itération 1 à 7 jusqu'à ce que vous avez suffisamment de résultat :D:D

voici un exemple de format date-heure, je l'ai fait de cette façon:

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)

j'ai mis à jour le code, un peu, parce que la version précédente s'est mal ouverte sur MS product.

1
répondu Anton 2015-03-13 09:01:05

Ok, voici une petite aide:

  1. Saisir odfpy code source:

    ~$ svn checkout https://svn.forge.osor.eu/svn/odfpy/trunk odfpy
    
  2. l'Installer:

     ~$ cd odfpy
     ~/odfpy$ python setup.py install
    
  3. Générer la documentation:

    ~/odfpy$ epydoc --pdf odf
    

    j'ai téléchargé la documentation générée ici.

  4. Exécuter ce simple programme d'exemple:

    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. lisez les exemples et essayez de donner un sens tout:

    ~/odfpy$ emacs examples/*.py
    

j'Espère que ça aide! Bonne chance!

-1
répondu nosklo 2009-06-04 11:45:14