首页 > 解决方案 > openpyxl问题:单元格值被删除而不是移动

问题描述

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

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

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)

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

标签: pythonopenpyxl

解决方案


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

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

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


推荐阅读