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

标签 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 文件有什么问题?

最佳答案

问题与使用中定义的名称/范围有关。我在另一个文件中看到它,但还不确定是什么触发了它。能否请您提交一个错误,最好带有示例文件,因为这将使问题的追踪变得容易得多。

如果您可以尝试 checkout ,2.1 分支应该包含对此的修复。据我所知,这个问题与使用其他工作簿中定义的名称或使用某些打印区域的保留名称等有关。当文件由 openpyxl 处理时,此类定义可能会丢失,但不应该影响数据本身

关于python - 使用 Openpyxl 读取时索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254637/

相关文章:

python - 在 SELECT 语句后获取数组

python - 我应该使用 shutil.copytree 吗?

python - 使用lxml获取父标签id

python - Python/NumPy 中 meshgrid 的用途是什么?

arrays - 编译错误: ByRef arugment type mismatch: How to call a value in an array

VBA - 关闭工作簿的自定义函数 - 不起作用

python - xlsxwriter,openpyxl : 'Workbook' object has no attribute 'write'

python - 是否可以使用 openpyxl 更改图表中的字体大小?

vba - 如何从另一个 Excel 实例引用工作簿

python - 如何使用 openpyxl 读取 xlsx 颜色信息