From: Lawrence D'Oliveiro on 7 Jun 2010 00:30 Very handy library for creating and manipulating ODF documents without any dependency on OpenOffice.org <http://odfpy.forge.osor.eu/>. I've been looking at using it for automating the generation of the invoices I send out at the end of each month. So far, it's been a lot easier than trying to figure out PyUNO. :) One thing, though, the examples are full of procedural sequences involving creating an object, and then calling some other object's addElement method to add the new object as a child—lots of repetitive accesses to intermediate variables. So I wrote this nice, simple convenience routine def AddElement(Parent, Construct, Attrs, Children) : # convenience routine for building ODF structures. NewElt = Construct(**Attrs) for Child in Children : NewElt.addElement(Child) #end for if Parent != None : Parent.addElement(NewElt) #end if return NewElt #end AddElement With this, I can build quite complicated structures in a single statement, using a more functional approach, e.g. AddElement \ ( Parent = TheDoc.text, Construct = odf.text.P, Attrs = dict ( stylename = AddElement ( Parent = TheDoc.automaticstyles, Construct = odf.style.Style, Attrs = dict(name = "work header", family = "paragraph"), Children = ( odf.style.TextProperties(fontweight = "bold"), AddElement ( Parent = None, Construct = odf.style.ParagraphProperties, Attrs = dict ( marginbottom = "0.21cm" ), Children = ( AddElement ( Parent = None, Construct = odf.style.TabStops, Attrs = dict(), Children = ( odf.style.TabStop(position = "15.1cm"), ) ), ) ), ) ) ), Children = ( odf.text.Span(text = "Description of Work"), odf.text.Tab(), odf.text.Span(text = "Charge"), ) )
|
Pages: 1 Prev: RE - Parsing ipconfig /all output - question Next: Non Sequitur: Re: Python Forum |