pyExcelerator在读取某些文件时遇到问题

时间:2009-12-10 14:13:47

标签: python excel xls pyexcelerator

在阅读一些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被它的作者放弃了:(

非常感谢有关解决此问题的任何建议。

2 个答案:

答案 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

Project website

General info, release notes and history from the documentation