因此,我有一个非常简单的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行并且无法返回。
我该如何解决这个问题?可以将行放在列表中然后删除它们可能有效吗?还是会引起同样的问题?提前致谢
最佳答案
从底部开始,逐步向上!
for rowNum in range(sheet.max_row, 1, -1):
if sheet.cell...
关于python - 迭代Excel行并根据符合条件删除的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52864635/