当使用Openpyxl进行阅读时,索引超出范围

我试图用Openpyxl打开一个.xlsx文件,使用文档中的“优化阅读器”提示:

# -*- coding: iso-8859-1 -*- from openpyxl import load_workbook wb = load_workbook(filename = r'/path/to/the/file.xlsx', use_iterators = True) 

这给我以下错误:

 Traceback (most recent call last): File "/home/me/test.py", line 5, in <module> wb = load_workbook(filename = r'/path/to/the/file.xlsx', use_iterators = True) File "/usr/local/lib/python2.6/dist-packages/openpyxl/reader/excel.py", line 151, in load_workbook _load_workbook(wb, archive, filename, read_only, keep_vba) File "/usr/local/lib/python2.6/dist-packages/openpyxl/reader/excel.py", line 240, in _load_workbook wb._named_ranges = list(read_named_ranges(archive.read(ARC_WORKBOOK), wb)) File "/usr/local/lib/python2.6/dist-packages/openpyxl/reader/workbook.py", line 160, in read_named_ranges named_range.scope = workbook.worksheets[int(location_id)] IndexError: list index out of range 

我也尝试使用标志(keep_vba = True|False, guess_types = True|False, data_only = True|False)与每个组合。 同样的错误。

我试图打开的.xlsx文件有13个工作表,没有超过200行的工作表,所以我想这不是一个大小问题。 我无法编辑这个.xlsx文件上的任何内容,我没有权限,这是一个只读文件。

我在Debian Squeeze 64位上使用Python 2.6,而Openpyxl的版本是2.1.0。 如果我试图打开其他文件(一个空的testing文件),它工作正常(没有错误触发,脚本进行)。

所以我想这个问题是:我试图打开的.xlsx文件有什么问题?

问题与使用中定义的名称/范围有关。 我已经看到了另一个文件,但还不知道是什么触发它。 你能否提交一个bug,最好带一个示例文件,因为这样会使问题更容易跟踪。

如果你可以尝试一个结帐,2.1分支应该包含这个修复。 据我所知,这个问题与其他工作簿中定义名称的使用有关,或者在打印区域中使用某些保留名称时,这样的定义可能会丢失,但是这种定义可能会在openpyxl处理时丢失,但不会影响数据本身