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

时间:2019-08-09 14:57:12

标签: python 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)

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

1 个答案:

答案 0 :(得分:0)

您将空单元格移至新范围,从而覆盖了数据。

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

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