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)
没有错误反馈。输出文件删除了所有这些项目。
解决方案
您正在将空单元格移动到新范围,从而覆盖您的数据。
for remove_item in removal:
if <condition>:
ws.move_range('D'+str(num), cols=4)
由于多次满足 if 条件,因此您移动例如范围 D8 4 列,然后再次移动范围 D8(现在不包含数据)4 列,覆盖之前移动的数据。
推荐阅读
- php - php 错误记录:替换 7.2.0 中 error_handler 中已弃用的 errcontext
- java - 在 CalendarView Android 中更改字体系列
- java - 如何通过另一个类的方法调用一个类的实例变量
- python - Matplotib Finance (mplfinance) 格式化图表的轴 unsing mpf.plot()
- iphone - 使用 JavaFX FileChooser 不选择 DCIM jpg 文件
- django - 选择的条目超过 1000 个时无法保存管理表单
- excel - 如果行与上面的行不同,则循环,将行粘贴到不同的工作表中
- python - Python计算字典列表中的值
- python - 如何将日期轴添加到我的绘图对象图形中?
- code-behind - 如何从aspx文件中提取c#?