Python & OpenOffice Spreadsheets

r rt8396 at gmail.com
Mon Nov 23 19:48:48 EST 2009


On Nov 23, 4:49 am, Gerhard Häring <g... at 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!



More information about the Python-list mailing list