Question

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?

Was it helpful?

Solution

What's wrong with xlwt?

OTHER TIPS

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

I'd use JExcelApi, but only because I've used it before. Never have touched HSSF. Biggest show-stopper I can recall is JExcelApi doesn't support multiple formats in one cell (e.g. half the text in bold, the other half in italic or something like that). I think in general JExcelApi is more limited than HSSF, but the limitations never got in my way.

And yes, documentation is sparse for the interface (and nonexistent for the underlying mechanisms), but I thought it was doable...

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.

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top