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

时间:2016-07-09 19:06:54

标签: python openpyxl

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

这适用于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

1 个答案:

答案 0 :(得分:1)

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

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

某些应用程序设置错误。您可以使用ws.calculate_dimension()检查工作表的外观尺寸。

如果这返回了您知道不正确的范围,请说A1:A1然后只需重置max_rowmax_column属性就可以使用该文件:

ws.max_row = ws.max_column = None