Python openpyxl : Read only mode returns a different row count

标签 python openpyxl

我正在使用 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_rowmax_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/

相关文章:

Python:统计长度为3的姓氏并将其分配给 "answer"变量

python - pandas 数据框 to_csv 适用于 sep ='\n' 但不适用于 sep ='\t'

python - 与长时间运行的 python 脚本交互

python - 如何使用 openpyxl 将工作表从一个工作簿复制到另一工作簿?

python - 如何使用 Python 将一行 Excel 工作表复制到另一个工作表

python - openpyxl设置数字格式

python - 通过 FTP 确定列表是 Python 中的目录还是文件

python - wxPython (Phoenix) 中的全局事件处理程序

python - 如何迭代工作簿中的工作表,openpyxl

python - 内存错误使用openpyxl和大数据excel