遍历 Excel 行并根据满足的条件删除的最佳方法
Best way to iterate through Excel rows and delete based on met criteria
所以我有一个非常简单的 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 and is now 20 也符合条件,那么该行不会被删除,因为 for 循环已经扫描了第 20 行并且无法返回。
如何解决这个问题?可以将行放在列表中然后删除它们可能有效吗?或者这会导致同样的问题吗?提前致谢
从底部开始,逐步向上!
for rowNum in range(sheet.max_row, 1, -1):
if sheet.cell...
所以我有一个非常简单的 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 and is now 20 也符合条件,那么该行不会被删除,因为 for 循环已经扫描了第 20 行并且无法返回。
如何解决这个问题?可以将行放在列表中然后删除它们可能有效吗?或者这会导致同样的问题吗?提前致谢
从底部开始,逐步向上!
for rowNum in range(sheet.max_row, 1, -1):
if sheet.cell...