Удалить строки в обратном порядке, но пропустить строку заголовка - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь найти способ удалить строки в обратном порядке с помощью! = В листе Excel, используя openpyxl, но пропустить строку заголовка 1.

Следующий способ удаляет строку заголовка, и я не уверен, как добавитьпропустить строку 1:

for c in reversed(ws7['M']): 
    if c.value != 'Integration Live': 
        ws7.delete_rows(c.row)

Я могу удалить без обратного хода таким образом ниже, но не смог понять, как повернуть его вспять, чтобы индекс не испортился во время удаления (что приводит к тому, что некоторые строкипропущено по процессу удаления).

for row in ws7.iter_rows(min_col=13, max_col=13, min_row=2, max_row=None):
    if row[12].value != 'Integration Live':
        ws7.delete_rows(row[12].row)

Есть предложения о том, как удалить строки в обратном порядке при пропуске строки заголовка?

Я пробовал это, но получаю исключение:

for row in reversed(ws7.iter_rows(min_col=None, max_col=None, min_row=2, max_row=None)):
    if row[12].value != 'Integration Live':
        ws7.delete_rows(row[12].row)

enter image description here

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Когда ws['M'] возвращает кортеж, проще всего игнорировать первый элемент:

cells = ws['M'][1:]
for row in reversed(cells):
    …
0 голосов
/ 07 ноября 2019

Решено с:

for c in reversed(ws7['M'][1:]):
    if c.value != 'Integration Live':
        ws7.delete_rows(c.row)
...