Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Python & OpenOffice Spreadsheets

235 views
Skip to first unread message

Gerhard Häring

unread,
Nov 23, 2009, 5:49:29 AM11/23/09
to pytho...@python.org
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
directly.

-- Gerhard

Paul Rudin

unread,
Nov 23, 2009, 6:12:37 AM11/23/09
to
Gerhard Häring <g...@ghaering.de> writes:


Depends on exactly what you mean by "simple" - but pyuno allows you to
read and write openoffice spreadsheets.

Krishnakant

unread,
Nov 23, 2009, 6:25:07 AM11/23/09
to Paul Rudin, pytho...@python.org


Odfpy is a good module and is easy too.
http://kk.hipatia.net/public/gnukhata/gnukhata-client/ has a deb package
I built for ubuntu 9.04.
I can even provide you the distutils tarball off the list (because I
can't recall the url from I downloaded it, may be sourceforge ).
Happy hacking.
Krishnakant

Chris Withers

unread,
Nov 23, 2009, 7:18:37 AM11/23/09
to Gerhard Häring, pytho...@python.org
Gerhard H�ring wrote:
> Is there a *simple* way to read OpenOffice spreadsheets?

Ironically, if you don't mind working in .xls, which OpenOffice handles
just fine, you have xlrd and xlwt to do exactly what you're after:

http://www.python-excel.org/

cheers,

Chris

--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk

jfab...@yolo.com

unread,
Nov 23, 2009, 2:01:00 PM11/23/09
to
Krishnakant wrote:

Would you including me in your response. I'd really like to find a py
module to allow simple use of openoffice.

Johnf

Terry Reedy

unread,
Nov 23, 2009, 3:28:37 PM11/23/09
to pytho...@python.org
Krishnakant wrote:
> On Mon, 2009-11-23 at 11:12 +0000, Paul Rudin wrote:
> Odfpy is a good module and is easy too.

Tarball at
http://pypi.python.org/pypi/odfpy/

Hello world example at
http://opendocumentfellowship.com/development/projects/odfpy

r

unread,
Nov 23, 2009, 7:48:48 PM11/23/09
to


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!

bobicanprogram

unread,
Nov 25, 2009, 5:18:29 PM11/25/09
to


OO Calc has an HTML file feature for auto updating fields in a
spreadsheet.

I hacked together something for a talk a few years ago:

http://www.icanprogram.com/hosug

(See Open Office Calc demo section)
While it isn't Python code it should be easy enough to convert to
Python.

bob

Lawrence D'Oliveiro

unread,
Nov 27, 2009, 11:44:53 PM11/27/09
to
In message <486869af-d89f-4261-b4c2-
f45af5...@e7g2000vbi.googlegroups.com>, r wrote:

> I find the syntax far to[o] complicated than it should be.

That’s because it was originally written for Java programmers.

r

unread,
Nov 28, 2009, 12:33:51 AM11/28/09
to
On Nov 27, 10:44 pm, Lawrence D'Oliveiro <l...@geek-
central.gen.new_zealand> wrote:
> In message <486869af-d89f-4261-b4c2-

>
> f45af5d3b...@e7g2000vbi.googlegroups.com>, r wrote:
> > I find the syntax far to[o] complicated than it should be.
>
> That’s because it was originally written for Java programmers.

Well that explains the high level of asininity alright! ;-)

Paul Rudin

unread,
Nov 28, 2009, 5:14:39 AM11/28/09
to
r <rt8...@gmail.com> writes:

> 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..

[employing weapons of mass snippage]

It's true that it's a hassle, but the boiler plate stuff can be stuck in
a function and then forgotton about really.


0 new messages