Поэтому у меня очень простой цикл, который удаляет строки, если значение в столбце 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 и не может вернуться.
Как решить эту проблему? Может ли положить строки в список, а затем удалить их, возможно, работать? Или это может вызвать ту же проблему? заранее спасибо
Начинайте снизу и делайте свой путь!
for rowNum in range(sheet.max_row, 1, -1):
if sheet.cell...
for c in reversed(sheet['9']): if c.value == "Employee Name": sheet.delete_rows(c.row)