我正在尝试使用 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 文件有什么问题?
最佳答案
问题与使用中定义的名称/范围有关。我在另一个文件中看到它,但还不确定是什么触发了它。能否请您提交一个错误,最好带有示例文件,因为这将使问题的追踪变得容易得多。
如果您可以尝试 checkout ,2.1 分支应该包含对此的修复。据我所知,这个问题与使用其他工作簿中定义的名称或使用某些打印区域的保留名称等有关。当文件由 openpyxl 处理时,此类定义可能会丢失,但不应该影响数据本身
关于python - 使用 Openpyxl 读取时索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254637/