You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

openpyxl的delete_rows方法为何无法删除全部空行?

问题分析与解决

核心错误1:遍历方向逻辑错误

你当前从第1行到最后一行正向遍历,删除空行后,后续行的索引会自动向前偏移。比如删除第5行后,原第6行变成新的第5行,但循环会继续执行到第6行,直接跳过了现在的第5行,这就是连续空行时无法全部删除的根本原因。

核心错误2:参数拼写错误

代码中amount = amoun是明显的拼写错误,正确写法应为amount=1(表示删除1行)。

修正后的完整代码

from openpyxl import load_workbook

wb = load_workbook(r"C:\Users\User\Desktop\реставрация.xlsx")
ws2 = wb['clean']

# 从最后一行倒序遍历,避免删除行后索引偏移导致漏删
for row in range(ws2.max_row, 0, -1):
    if ws2[row][1].value is None:
        ws2.delete_rows(idx=row, amount=1)

wb.save(r"C:\Users\User\Desktop\реставрация.xlsx")

额外优化建议

  • 代码中导入的selenium和get_column_letter未实际使用,可直接删除以精简代码
  • 若需要判断整行是否为空(而非仅判断第B列),可将空行判断逻辑修改为:
    if all(cell.value is None for cell in ws2[row]):
        ws2.delete_rows(idx=row, amount=1)
    

内容的提问来源于stack exchange,提问作者Evgenslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:05:25