我正在使用 openpyxl 处理 xlsx 文件,但是当我以只读模式打开此 xlsx 文件时,我似乎只能访问前 10 行。我没有在所有 xlsx 文件中看到这一点。 xlsx 文件中的数据是否有某些内容会在 read_only 为 True 时提前触发 StopIteration,但在 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
最佳答案
set ws.max_row = ws.max_column = None
将解决您的问题
引用文档:
只读模式依赖于创建文件的应用程序和库,提供有关工作表的正确信息,特别是工作表的已使用部分(称为维度)。
某些应用程序设置不正确。您可以使用 ws.calculate_dimension()
检查工作表的外观尺寸。
如果这返回一个您知道不正确的范围,例如A1:A1
,那么只需重置max_row
和max_column
属性就可以了使用该文件:
ws.max_row = ws.max_column = None
关于Python openpyxl : Read only mode returns a different row count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38285364/