Python openpyxl: 只读模式 returns 不同的行数

Python openpyxl: Read only mode returns a different row count

我正在使用 openpyxl 处理一个 xlsx 文件,但是当我在 read_only 模式下打开这个 xlsx 文件时,我似乎只能访问前 10 行。我没有在所有 xlsx 文件中看到这一点。 xlsx 文件中的数据是否会在 read_only 为 True 而不是 False 时提前触发 StopIteration?电子表格中的所有数据(理论上)都是统一的纯文本。

这对 book2 有效,但对 book1 无效,如下所示。

>>> import openpyxl
>>> a = openpyxl.load_workbook("book1.xlsx", read_only=True)
>>> a.active.max_row
10
>>> a = openpyxl.load_workbook("book1.xlsx", read_only=False)
>>> a.active.max_row
20082

>>> a = openpyxl.load_workbook("book2.xlsx", read_only=True)
>>> a.active.max_row
1069
>>> a = openpyxl.load_workbook("book2.xlsx", read_only=False)
>>> a.active.max_row
1069

设置 ws.max_row = ws.max_column = None 将解决您的问题 引用自文档:

只读模式依赖于创建文件的应用程序和库提供有关工作表的正确信息,特别是其中使用的部分,称为维度。

一些应用程序设置不正确。您可以使用 ws.calculate_dimension() 检查工作表的外观尺寸。

如果这个 returns 您知道的范围不正确,比如 A1:A1 然后简单地重置 max_rowmax_column 属性应该允许您使用该文件:

ws.max_row = ws.max_column = None