[英]Excel rows not getting deleted using openpyxl
我正在尝试删除 excel 行(如果它们为零)。 很少有行被删除,但我确实看到更多行没有被删除。 下面是代码。 对此有任何了解。
for row in range(2, sheet2.max_row+1):
cell2 = sheet2.cell(row, 15)
if cell2.value == 0:
sheet2.delete_rows(row, 1)
print(f"THe cell valaue is {row} {cell2.value}")
wb2.save('New_Overhead_cal.xlsx')
一个更新...当我在保存 excel 文件之前复制并粘贴 for 循环 5 次时,行被删除。 所以这意味着删除后行是否移动导致了这个问题?
因为每次删除一行,当你的行计数器向前移动时,行的 rest 向上移动,导致你的 for 循环丢失一些项目。 正如@Scott Craner 所建议的那样,向后循环应该可行。
当您尝试在使用 for 循环时从数组中删除某些内容时,会发生同样的问题。
for row in range(sheet2.max_row, 1, -1):
cell2 = sheet2.cell(row, 15)
if cell2.value == 0:
sheet2.delete_rows(row, 1)
print(f"THe cell valaue is {row} {cell2.value}")
你也可以用while
来做。
row = 2
while(row <= sheet2.max_row):
cell2 = sheet2.cell(row, 15)
if cell2.value == 0:
sheet2.delete_rows(row, 1)
print(f"THe cell valaue is {row} {cell2.value}")
else:
row += 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.