使用openpyxl在特定行之前插入空白行

时间:2019-05-12 15:06:30

标签: python openpyxl

我一直在研究一个项目,其中我在.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

你能帮我吗? 非常感谢!

1 个答案:

答案 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")