Как удалить последние пять строк на любом листе (который может содержать любое количество строк) с помощью openpyxl? - PullRequest
0 голосов
/ 11 октября 2019

Таким образом, я могу удалить последнюю строку, если я укажу ее с этим, конечно:

ws2.delete_rows(42)

Но как я могу удалить последние пять строк, например, в любом заданном листе, если может быть любое числостроки? Должен ли я определить max_row и затем каким-то образом повторить удаление пять раз? Или есть другой способ?

Я могу выполнить это пять раз, чтобы удалить последние пять строк, но есть ли способ сделать это без повторения команды?

mr = ws2.max_row
ws2.delete_rows(mr)

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Методы delete_rows и delete_columns принимают индекс и необязательное количество элементов. Так что ws.delete_rows(ws.max_row-5, 5) должен делать то, что вы хотите.

0 голосов
/ 11 октября 2019

Оберните его в цикл 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 был включен в диапазон,и перевернуть диапазон, чтобы мы начали с последнего ряда.

...