遍历Excel行并根据满足的条件删除的最佳方法

时间:2018-10-17 22:47:22

标签: python for-loop openpyxl

所以我有一个非常简单的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 :(得分:1)

从底部开始,逐步向上!

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