如何使用 openpyxl 删除任何工作表(可能有任意数量的行)中的最后五行?

How do you delete the last five rows in any worksheet (that could have any number of rows) with openpyxl?

所以我当然可以删除最后一行,如果我用这个指定的话:

ws2.delete_rows(42)

但是,如果可能有任意数量的行,我该如何删除任何给定工作表中的最后五行?我应该确定 max_row 然后以某种方式循环删除五次吗?或者有别的办法吗?

我可以 运行 这五次来删除最后五行,但是有没有办法在不重复命令的情况下做到这一点?

mr = ws2.max_row
ws2.delete_rows(mr)

将其包装在 for 循环中:

for _ in range(5):
    mr = ws2.max_row
    ws2.delete_rows(mr)

或者:

for i in reversed(range(ws2.max_row - 4, ws2.max_row + 1)):
    ws2.delete_rows(i)

在范围顶部加一,使 max_row 包含在范围内,然后反转范围,因此我们从最后一行开始。

delete_rowsdelete_columns 方法采用索引和可选数量的项目。所以 ws.delete_rows(ws.max_row-5, 5) 应该做你想做的事。