On Nov 23, 4:49 am, Gerhard Häring <g...@ghaering.de> wrote: > Is there a *simple* way to read OpenOffice spreadsheets? > > Bonus: write them, too? > > I mean something like: > > doc.cells[0][0] = "foo" > doc.save("xyz.ods") > > >From a quick look, pyodf offers little more than just using a XML parser
I find the syntax far to complicated than it should be. Here is an example just to insert some text.. import uno """ Here is the sequence of things the lines do: 1. Get the uno component context from the PyUNO runtime 2. Create the UnoUrlResolver 3. Get the central desktop object 4. Declare the ServiceManager 5. Get the central desktop object 6. Access the current writer document 7. Access the document's text property 8. Create a cursor 9. Insert the text into the document """ localContext = uno.getComponentContext() resolver = localContext.ServiceManager.createInstanceWithContext( "com.sun.star.bridge.UnoUrlResolver", localContext ) ctx = resolver.resolve ( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" ) smgr = ctx.ServiceManager desktop = smgr.createInstanceWithContext ( "com.sun.star.frame.Desktop",ctx) model = desktop.getCurrentComponent() text = model.Text cursor = text.createTextCursor() text.insertString( cursor, "Hello World", 0 ) """ Do a nasty thing before exiting the python process. In case the last call is a one-way call (e.g. see idl-spec of insertString), it must be forced out of the remote-bridge caches before python exits the process. Otherwise, the one-way call may or may not reach the target object. I do this here by calling a cheap synchronous call (getPropertyValue).""" ctx.ServiceManager WHAT!?!?!??! I don't mean to discredit these guys but the API should be re-thought, and re-written! I don't care about component contexts, unoresolvers, or little green aliens. I just want to insert 'Hello World' into cell A3! Sheesh, There must be an easier way! -- http://mail.python.org/mailman/listinfo/python-list