python openpyxl删除excel特定行数据遇到的问题

本文探讨了在使用Python openpyxl库操作Excel时,删除指定行数据时遇到的挑战,包括代码迭代问题和不同尝试。作者分享了从倒序删除到改进的解决方案,寻求更简洁方法的过程,并最终找到的避免复杂循环的高效做法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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])

这个方法可以使用,但感觉比较麻烦,有大佬知道更好的解决办法吗?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值