我一直在研究一个项目,其中我在.xlsx文档中搜索包含特定值“ D”的单元格,然后在该单元格行之前插入空白行
这是我想出的示例代码:
import openpyxl
wb = openpyxl.load_workbook('TestFile4.xlsx')
sheet = wb['Sheet1']
for row in sheet.iter_rows():
for cell in row:
if cell.value == 'D':
sheet.insert_rows(cell.row, amount=1)
当我运行此脚本时,与其在单元格的行具有值“ D”之前插入一行,不如在一行中插入5行: https://i.stack.imgur.com/saSWf.png
你能帮我吗? 非常感谢!
答案 0 :(得分:0)
这是一个逻辑错误,当自动插入新行时,下一行将更改为您要搜索的值,因此在循环时条件将再次为true,因此它将再次插入新行。
例如:您有6行,因此“ for循环”将执行6次,并且在第4次迭代时条件为true,并且您要输入新行。这意味着D会将其位置更改为第5行,如果条件再次为True。
您可以通过添加“打破循环”来克服这一点:
import openpyxl
flag=False
wb = openpyxl.load_workbook('Test.xlsx')
sheet = wb['Sheet1']
for row in sheet.iter_rows():
for cell in row:
if cell.value == 'D':
sheet.insert_rows(cell.row, amount=1)
flag=True
break
if flag:break
else:
continue
wb.save("test.xlsx")