openpyxl 问题:单元格值已删除而不是移动

openpyxl issue: cell value deleted instead of moved

我写了一个脚本,如果它们满足条件,应该移动某些单元格,但这些值没有移动,而是被删除了。

我分别尝试了运行每个代码块,它们都工作得很好,但是当结合起来时,问题就出现了。

import openpyxl

removal = ['a', 'b', '-c', 'c', 'd']

for num in range (8, ws.max_row):
    for remove_item in removal:
        if (ws['A'+str(num)].value.startswith('ABC') or ws['A'+str(num)].value.startswith('DEF')) and (ws['B'+str(num)].value.startswith(remove_item) or ws['B'+str(num)].value.endswith(remove_item) or ws['C'+str(num)].value.startswith('ok')):
            ws.move_range('D'+str(num), cols=4)
            ws.move_range('E'+str(num), cols=4)

无错误反馈。输出文件删除了所有这些项目。

您正在将空单元格移动到新范围,从而覆盖您的数据。

for remove_item in removal:
    if <condition>:
        ws.move_range('D'+str(num), cols=4)

由于多次满足 if 条件,例如移动范围 D8 4 列,然后再次移动范围 D8(现在不包含数据)4 列,覆盖之前移动的数据。