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 列,覆盖之前移动的数据。
我写了一个脚本,如果它们满足条件,应该移动某些单元格,但这些值没有移动,而是被删除了。
我分别尝试了运行每个代码块,它们都工作得很好,但是当结合起来时,问题就出现了。
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 列,覆盖之前移动的数据。