views:

2888

answers:

5

I'd love a good native Python library to write XLS, but it doesn't seem to exist. Happily, Jython does.

So I'm trying to decide between jexcelapi and Apache HSSF: http://www.andykhan.com/jexcelapi/tutorial.html#writing http://poi.apache.org/hssf/quick-guide.html

(I can't use COM automation because I'm not on Windows, and even if I was, I couldn't afford Office licenses.)

My initial thoughts are that POI/HSSF is very thorough, but also very Java-- everything seems a bit harder than it needs to be. Good documentation, but my head hurts trying to bridge the gap between what it describes and what I need to accomplish.

jexcepapi seems to have a simpler, nicer (for me) interface, but doesn't have very good documentation or community.

Which would you use, and why?

A: 

Excel exposes the same OLE automation API used by VBA to anything that supports COM. You can use win32com (which is included with ActiveState Python by default) to manipulate spreadsheets in much the same way that you would do in VBA.

ConcernedOfTunbridgeWells
+1  A: 
Ellery Newcomer
+7  A: 

What's wrong with xlwt?

S.Lott
I'd ask the same question, and recommend Jeremy take a look at it; I've used pyexcelerator (of which xlwt is an improved fork) in real-world projects and been quite happy with it.
James Bennett
This is what gave me pause:http://sourceforge.net/mailarchive/forum.php?forum_name=pyexcelerator-develI saw various blog posts about bugs. I don't really want to hit a bug that requires me to learn a lot about the binary format-- it seems like a deep field. Agree, though, xlwt seems to win.
Jeremy Dunck
@Jeremy Dunck: It isn't "deep" it's a load of Microsoft crap. It's simply an awful thing. You're almost better off building an XML workbook document than trying to build a binary.
S.Lott
I've used pyexcelerator, too, with great results. Anyone know if xlwt allows ordering of worksheets within the workbook?
Jeremy Cantrell
Perhaps that's a separate question: "How do I order the pages in a xlwt workbook?"
S.Lott
+2  A: 

+1 for xlwt. See Matt Harrison's blog for posts on how to use xlwt and how to deal with large spreadsheets. Also, check out the python-excel group on Google "If you use Python to read, write or otherwise manipulate Excel files".

technomalogical
+1  A: 

i personally dis-advise JExcel if you intent to use anything more then very simple text to excel and vice versa.

the more advanced features are abstracted very leaky from the underlying (basically undocumented) low-level code / (documented) Excel specs.

another problem we ran into is jexcel fails fatally when encountering invalid formulas. and if you need to parse client supplied spreadsheets this is a problem.

also the new POI version support (almost) seemless both xls and xlsx at the same time.

pvgoddijn