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
相关产品推荐
相关产品推荐

