无法让 OpenPyXl 删除行
Can't get OpenPyXl to delete rows
我正在使用 Python 和 OpenPyXL 合并两个 Excel 报告。
当报告中有一行全为零值时,应删除该行。
删除行的命令看起来很简单,但根本行不通。 Another post 建议删除行不适合 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)
我正在使用 Python 和 OpenPyXL 合并两个 Excel 报告。 当报告中有一行全为零值时,应删除该行。
删除行的命令看起来很简单,但根本行不通。 Another post 建议删除行不适合 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)