Python & OpenOffice Spreadsheets

G

Gerhard Häring

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
 
P

Paul Rudin

Gerhard Häring said:
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.


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

Terry Reedy

Krishnakant said:
Gerhard Häring said:
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.

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


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

r

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!
 
B

bobicanprogram

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


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
 
L

Lawrence D'Oliveiro

In message <486869af-d89f-4261-b4c2-
I find the syntax far to[o] complicated than it should be.

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

Paul Rudin

r said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top