在读取一些xls文件时,我在使用pyExcelerator时遇到了问题。
我写了一些python脚本,它们使用这个库来解析XLS文件并将信息填充到数据库中。
这些脚本解析的文件的模板可能会有所不同,我有时会重新配置脚本来处理它们。对于我遇到的一个模板,问题是: pyExcelerator只是引发了一个异常:
Traceback (most recent call last):
File "/home/* * */parsexls.py",
line 64, in handle_label
parser.parse()
File "/home/* * */parsers.py", line 335, in parse
self.contents = pyExcelerator.parse_xls(self.file_record.file,
self.encoding)
File "/usr/local/lib/python2.6/dist-packages/pyExcelerator/ImportXLS.py",
line 327, in parse_xls
ole_streams = CompoundDoc.Reader(filename).STREAMS
File "/usr/local/lib/python2.6/dist-packages/pyExcelerator/CompoundDoc.py",
line 67, in __init__
self.__build_short_sectors_data()
File "/usr/local/lib/python2.6/dist-packages/pyExcelerator/CompoundDoc.py",
line 256, in __build_short_sectors_data
dentry_start_sid, stream_size) = self.dir_entry_list[0]
IndexError: list index out of range一些XLS文件包含空表,删除这些表有帮助,但许多文件即使没有空表也无法处理。这些文件没有什么特别之处,也没有包含公式或图片--只有字符串、数字和日期。
正如我所看到的,pyExcelerator被它的作者抛弃了:(
任何关于解决这个问题的建议都是非常感谢的。
发布于 2009-12-10 22:21:02
您可能希望尝试一下xlrd ...它最初(我相信)是作为pyExcelerator的一个分支,因此合并只需要很少的代码更改,但它是积极维护的:
http://pypi.python.org/pypi/xlrd
Project website
General info, release notes and history from the documentation
发布于 2009-12-15 18:13:22
我是xlrd的作者。它reads XLS文件,并不是任何分支。我维护了一个名为xlwt的包,它是pyExcelerator的一个分支,用于writes XLS文件。pyExcelerator中的parse_xls功能已经被弃用到了从xlwt中删除的地步。请改用xlrd。
考虑到您重新生成的回溯,文件看起来可能已损坏。它在那里所做的事情发生在工作表数据被解析之前。是什么软件生成了这些文件?你能用Excel或OpenOffice.org的Calc或Gnumeric打开它们吗?xlrd可能会给出更有意义的错误消息。您可能希望将失败文件的副本发送给我(insert_punctuation('sjmachin','lexicon','net'));请包括一些带有空表的文件,以及一些没有空表的文件。顺便问一下,你用什么来删除空表?在处理包含空工作表的文件时,您会从pyExcelerator收到什么错误消息?
https://stackoverflow.com/questions/1881253
复制相似问题