ANNOUNCE: xlrd 0.5.2 -- extract data from Excel spreadsheets

John Machin sjmachin at lexicon.net
Sun Mar 19 10:27:14 CET 2006


On 19/03/2006 2:30 PM, Kent Johnson wrote:
> John Machin wrote:
> 
>> On 19/03/2006 8:31 AM, Kent Johnson wrote:
>>
>>> How does xlrd compare with pyexcelerator? At a glance they look 
>>> pretty similar.
>>>
>>
>> I have an obvious bias, so I'll just leave you with a not-very-PC 
>> analogy to think about:
>>
>> Depending on the ambient light and the quantity of mead drunk in the 
>> hall, Helen of Troy and Grendel's mum might at a glance look pretty 
>> similar, too. Perhaps a more thorough investigation is needed. What 
>> about your requirements: a partner for the graduation ball, or someone 
>> to lift the truck off you when the jack collapses?
> 
> 
> That didn't shed much light. I'm interested in your biased opinion, 
> certainly you must have had a reason to write a new package.
> 
> I don't have current requirements for this, I'm curious.

* It's not new. First public release was on 2005-05-15. When I started 
writing it, there was no pure-Python Excel reading facility available at 
all. Roman Kiseliov's pyExcelerator was first announced on c.l.py.ann 
on 2005-03-22 (write only) and later with an import facility on 2005-05-12.

* I wrote it because I needed to get data out of Excel spreadsheets in a 
production environment. I had tried COM, ODBC, and manual save-as-CSV 
and all those approaches were unsatisfactory in terms of reliability and 
robustness.

* Creating Excel files: xlrd doesn't do this. If you have Python 2.4, 
pyExcelerator is the best choice. The alternative is PyXLWriter which 
works with Python 2.2 onwards but is no longer maintained and writes 
only the older Excel 5.0 / Excel 95 file format (no Unicode support, 
limited to 16K rows).

* Herewith the biased comparison:
[I've CCed Roman on this & the previous posting, by the way]

** Python versions: xlrd 2.1 to 2.4, pyExcelerator 2.4 only

** Excel file versions: xlrd 3.0 onwards, pyExcelerator 5.0 onwards [I 
doubt there are many 3.0, 4S and 4W files hanging about but I had some
Excel 4.0 files so I did it as a jeu d'esprit]

** Date support: Excel stores dates as real numbers of days sort-of 
since some variable date ... a long shocking story, read the xlrd docs. 
xlrd puts considerable effort into examining the formats used by number 
cells so that they can be classifed as date or not-date. It provides 
functions for converting between Excel date numbers and datetime tuples.

** Speed: On a 3.2GHz Intel P4 with 1 GB of RAM, xlrd loads a 128 Mb 
spreadsheet [yes sir, real live user data] in a little over a minute, 
while pyExcelerator takes a little over 3 minutes. Taking out half of 
that memory doesn't bother xlrd at all, but ...

** Memory footprint: pyExcelerator can use from 2.5 to 4 times as much 
memory as xlrd.

** Docs: xlrd has docs.

Hoping that shed some light :-)
Cheers,
John



More information about the Python-list mailing list