使用Openpyxl读取时索引超出范围

时间:2014-10-08 10:26:51

标签: python excel 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。 如果我尝试打开另一个文件(一个空的测试文件),它工作正常(没有错误触发,脚本继续)。

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

1 个答案:

答案 0 :(得分:0)

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

如果您可以尝试结帐,2.1分支应包含此修复程序。据我所知,该问题与使用其他工作簿中定义的名称或使用某些保留名称用于打印区域等有关。这些定义很可能在文件由openpyxl处理时丢失,但不应该在&#39; t影响数据本身