Python Can';不要让OpenPyXl删除行
我正在使用Python和OpenPyXL合并两个Excel报告。 当报表有一行全部为零值时,应删除该行 删除行的命令似乎很简单,但根本不起作用。建议删除行不能很好地处理Python Can';不要让OpenPyXl删除行,python,openpyxl,Python,Openpyxl,我正在使用Python和OpenPyXL合并两个Excel报告。 当报表有一行全部为零值时,应删除该行 删除行的命令似乎很简单,但根本不起作用。建议删除行不能很好地处理append。我没有使用这个函数,但可能还有其他的挑剔之处 我正在处理Excel文件,打开并保存操作组。下面是我要删除这些行的块的代码版本的注释 # Get WB # Get WS i = 0 del_rows = [] for row in ws.iter_rows(): i += 1 if row[0].val
append
。我没有使用这个函数,但可能还有其他的挑剔之处
我正在处理Excel文件,打开并保存操作组。下面是我要删除这些行的块的代码版本的注释
# Get WB
# Get WS
i = 0
del_rows = []
for row in ws.iter_rows():
i += 1
if row[0].value is None:
# INVALID DATA ROW - BLANK ROW
else:
rowcellvals = []
j = 0
for cell in row:
j += 1
if cell.value == row[0].value:
# INVALID COLUMN VAL - SKIP ACC NAME COL
continue
elif cell.value is None:
# SKIP TITLE ROWS
break
else:
# VALID DATA ROW
if j % 2 == 0:
rowcellvals.append(cell.value)
if not rowcellvals:
continue
else:
if sum(rowcellvals) == 0:
del_rows.append(i)
for r in del_rows:
ws.delete_rows(r, 1)
# SAVE
知道为什么删除行不是删除吗?因为您正在从工作表顶部删除行,所以您正在调整行索引。这意味着,一旦删除了一行,要删除的所有其他行的索引都是错误的。为避免这种情况,应始终删除工作表底部的行
for r in reversed(del_rows):
ws.delete_rows(r)
因为您正在从工作表顶部删除行,所以您正在调整行索引。这意味着,一旦删除了一行,要删除的所有其他行的索引都是错误的。为避免这种情况,应始终删除工作表底部的行
for r in reversed(del_rows):
ws.delete_rows(r)
不要在循环中使用delete_行,或者如果使用,请将其反转。是否反转?我不熟悉Python这样的习惯用法。请阅读,查看带有否定步骤的示例。不要在循环中使用delete_行,或者如果使用,请反转它。反转它?我不熟悉Python这样的习惯用法。请阅读,查看带有否定步骤的示例。