在阅读一些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被它的作者放弃了:(
非常感谢有关解决此问题的任何建议。
答案 0 :(得分:2)
我是xlrd的作者。它 r ea d 的XLS文件,并不是任何东西的分支。我维护了一个名为xlwt的软件包 w ri t es XLS文件,它是pyExcelerator的一个分支。 pyExcelerator中的parse_xls功能已弃用到xlwt的删除点。请改用xlrd。
鉴于您重现的追溯,看起来该文件可能已损坏。在解析工作表数据之前,它正在做什么。什么软件生成这些文件?你能用Excel或OpenOffice.org的Calc或Gnumeric打开它们吗? xlrd可能会给您一个更有意义的错误消息。您可能希望发送给我(insert_punctuation('sjmachin','lexicon','net'))您的失败文件的副本;请包括一些和没有空床单。顺便问一下,你用什么去除空床单?处理带空表的文件时,从pyExcelerator得到什么错误消息?
答案 1 :(得分:1)
您可能希望尝试使用xlrd ...它开始(我相信)作为pyExcelerator的分支,因此合并需要很少的代码更改,但它是主动维护的:
http://pypi.python.org/pypi/xlrd
General info, release notes and history from the documentation