python openpyxl删除excel特定行数据遇到的问题
for row in sheet_codereview.rows:
for cell in row:
print(cell.row,cell.column,cell.value)
if (cell.row>2) and (cell.column == 2) and (cell.value not in state):
sheet_codereview.delete_rows(cell.row)
本来尝试使用这个代码删除excel中第二列值不符合要求的行
然而在执行过程中发现代码能够识别到各行信息,但删除的时候会出错
最开始我以为错误主要是因为当第二行被删除时,代码下一个遍历的第三行其实是原来的第四行,导致有漏过不检测的行,于是我把代码改成了下面这样
del_row=[]
for row in sheet_codereview.rows:
for cell in row:
print(cell.row,cell.column,cell.value)
if (cell.row>2) and (cell.column == 2) and (cell.value not in state):
del_row.append(cell.row)
for row in del_row:
sheet_codereview.delete_rows(row)
然而发现删除的时候还是有问题,各行信息输出的时候是正确的,但删除的时候仍然无法删除正确
我最后选择倒序删除
del_row=[]
for row in sheet_codereview.rows:
for cell in row:
print(cell.row,cell.column,cell.value)
if (cell.row>2) and (cell.column == 2) and (cell.value not in state):
del_row.append(cell.row)
for i in range(len(del_row)):
sheet_codereview.delete_rows(del_row[len(del_row)-1-i])
这个方法可以使用,但感觉比较麻烦,有大佬知道更好的解决办法吗?