无法让OpenPyXl删除行

2024-03-29 13:41:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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

你知道为什么“删除行”不是“删除”吗?在


Tags: inforgetif报表valuecellexcel
1条回答
网友
1楼 · 发布于 2024-03-29 13:41:30

因为要从工作表顶部删除行,所以在执行操作时,您正在调整行索引。这意味着一旦您删除了一行,您要删除的所有其他行的索引都是错误的。为了避免这种情况,您应该始终从工作表底部删除行。在

for r in reversed(del_rows):
    ws.delete_rows(r)

相关问题 更多 >