我想选择一个从一个特定单元格(例如 A2)到无限的单元格范围。我尝试过:
range = ws['A2':]
,但不起作用。有人可以告诉我正确的语法吗?
我想获得一个从一个单元格到列末尾的单元格范围。
它不是无限的。 Excel 的行数是有限的,该值为 1048576,因此您可以轻松地编写 ws['A2:A1048576]
如果您忘记了最大数量,Openpyxl 确实会在其常量文件中保存该值
from openpyxl.xml.constants import (
MAX_COLUMN,
MAX_ROW,
)
rng = ws[f"A2:A{MAX_ROW}"]
rng
然而,这将是一个包含 1048576 个单元格的元组。选择这样的范围并没有什么意义,因为使用具有该行数的工作表通常不切实际。真正唯一重要的是“已用行”的数量,除了知道您有能力向工作表添加另一行之外,超出该数量的任何空行都是无关紧要的。
正如之前post
中提到的,所使用的行数可以通过工作表的“max_row”属性来获取。
这将给出用于工作表中最长列的最大行数。因此,您知道对于任何给定的列,不会有超出“max_row”的数据,并且此后的每个单元格都具有 Python 值 None。
如果
列有10行,则返回值为10,范围为'A2:A10'。
rng = ws[f'A2:A{ws.max_row}']
当然,如果您正在使用的列有 5 个已用行,并且 max_row 为 1000,则范围将覆盖所有 1000 行。正如上一篇文章中提到的,您可以单独检查该列以查找实际最大使用行(如有必要,在该范围内)。