XLRD Python 2.51 Question

John Machin sjmachin at lexicon.net
Tue May 8 17:58:09 EDT 2007


On May 9, 1:36 am, Carsten Haese <cars... at uniqsys.com> wrote:
> On Tue, 2007-05-08 at 08:26 -0700, kylan... at gmail.com wrote:
> > CompDocError: MSAT extension: accessing sector 1717046 but only 2887
> > in file
>
> > I am not sure what this means at all
>
> At least superficially that sounds like the file you're trying to open
> is truncated or otherwise corrupted to the point where xlrd doesn't know
> what to do with it.

Looks like to me it's truncated or corrupted to the point where xlrd
knows *exactly* what to do: pull the ejection handle.

Amplifying the error message: The extension to the Master Sector
Allocation Table appears to be referencing sector number 1717046 but
there are only 2887 sectors in the file. The default sector size is
512. Note that 1717046 * 512 > 800 Mb.

> What happens if you try to open the file with Excel?
> If Excel manages to open the file, maybe the file is using a storage
> format that's newer than what xlrd is prepared to handle.

There is no newer format that uses .XLS as an extension. Default from
Excel 2007 is .XLSX (XML format -- xlrd upgrade in preparation);
there's also a binary format (.XLSB) ...

If Excel manages to open the file, there are two other possibilities
(both of which have historical antecedents):
(1) we've fallen into the 0.1% gap in openoffice.org's 99.9% brilliant
reverse-engineering of the arcane structures in an OLE2 Compound
Document
(2) the file is trash an' Bill don't care :-(

Trying to open the file with openoffice.org's Calc (version 2.1) and
with Gnumeric is a good idea, if they are available conveniently.

I'd suggest that the OP send a copy of the file to the package author,
together with the following information:
(a) version of xlrd
(b) what platform
(c) what version of Python
(d) background to creation of file especially what software created it
(e) has xlrd been used successfully before/since to open files?
(f) does the path2 thingy in the first entry in the traceback indicate
that the file is on a network?

   startRow = 0, sh_idx = 0, path2 = '//otaam.com/root/SharedFiles/
GlobeOp/Risk/Cal Projects/temp/')

If so, what happens if the file is put on a local hard drive and this
is done:

shell-prompt> python
import xlrd
xlrd.open_workbook('the_file.xls')

HTH,
John




More information about the Python-list mailing list