0

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

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

4

2 回答 2

2

我是xlrd的作者。它读取XLS文件,而不是任何东西的分支。维护了一个名为 xlwt 的包,它写入XLS文件并且是 pyExcelerator 的一个分支pyExcelerator 中的 parse_xls 功能已被弃用,以至于从 xlwt 中删除。请改用 xlrd。

鉴于您复制的回溯,该文件看起来可能已损坏。它在那里所做的事情发生在工作表数据被解析之前。什么软件产生这些文件?你能用 Excel 或 OpenOffice.org 的 Calc 或 Gnumeric 打开它们吗?xlrd 可能会给你一个更有意义的错误信息。您可能想向我发送 (insert_punctuation('sjmachin', 'lexicon', 'net')) 失败文件的副本;请包括一些有和一些没有空纸。顺便问一下,你用什么来删除空床单?处理带有空工作表的文件时,您从 pyExcelerator 收到什么错误消息?

于 2009-12-15T10:13:22.017 回答
1

您可能希望尝试一下 xlrd ......它开始(我相信)作为 pyExcelerator 的一个分支,因此合并需要很少的代码更改,但它被积极维护:

http://pypi.python.org/pypi/xlrd

项目网站

文档中的一般信息、发行说明和历史记录

于 2009-12-10T14:21:02.093 回答