Лучший способ перебирать строки Excel и удалять их в соответствии с критериями - PullRequest
0 голосов
/ 18 октября 2018

Итак, у меня есть очень простой цикл for, который удаляет строки, если значение в столбце 9 равно имени сотрудника:

import openpyxl, os

wb = openpyxl.load_workbook('Opportunities.xlsx', data_only=True)
sheet = wb['OpportunityList']

for rowNum in range(2, sheet.max_row):
    if sheet.cell(row = rowNum, column = 9).value == 'Employee Name':
        print('Deleting row ' + str(rowNum))
        sheet.delete_rows(rowNum)

wb.save('1.xlsx')

Проблема, с которой я столкнулся, заключается в том, что строка 20 соответствуеткритерий и удаляется, строка 21 теперь становится строкой 20. Таким образом, цикл for будет выполняться с rowNum 21, и если строка, которая раньше была 21, а теперь 20, также соответствовала критериям, то эта строка не будет удалена, посколькуцикл for уже отсканировал строку 20 и не может вернуться назад.

Как мне решить эту проблему?Может ли помещение строк в список, а затем их удаление, возможно, сработать?Или это вызовет ту же проблему?Заранее спасибо

1 Ответ

0 голосов
/ 18 октября 2018

Начните снизу и двигайтесь вверх!

for rowNum in range(sheet.max_row, 1, -1):
    if sheet.cell...
...