いくつかの xls ファイルを読み取るときに pyExcelerator を使用すると問題が発生します。
このライブラリを使用して XLS ファイルを解析し、データベースに情報を入力する、私が書いた Python スクリプトがいくつかあります。
これらのスクリプトが解析するファイルのテンプレートは異なる場合があり、それらを処理するためにスクリプトを再構成することがあります。私が問題に遭遇したテンプレートの1つで: 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はその作者によって放棄されています:(
この問題を修正するための提案は大歓迎です。