首页 > 解决方案 > 使用 openpyxl 有条件地删除一行

问题描述

我有一个 xlsx 文件,其中包含特定数量的工作表。

我想要一个 python 脚本在指定的工作表中搜索单元格中的值,如果找到则删除整行。

我目前构建的脚本是为了搜索与值对应的行并更改值。我试过修改脚本没有任何成功。

这是我的代码:

import openpyxl
for f in files:
    if f[-4:] == "xlsx":
        book = openpyxl.load_workbook(f)
        sheet = book.active
        for idx, row in enumerate(sheet.iter_rows()):
            if row[0].value == "some_value":
                row[1].value = 1
        book.save(f)

任何帮助表示赞赏。

在 Python3、PyCharm、Windows 10 上运行。

标签: pythonopenpyxl

解决方案


这是根据值条件删除行的解决方案:

import openpyxl

f = "testFile.xlsx"
if f[-4:] == "xlsx":
    book = openpyxl.load_workbook(f)
    sheet = book.active
    [sheet.delete_rows(idx + 1) for idx, row in enumerate(sheet.values) if row[0] == "some value"]
    book.save(f)

或者

import openpyxl
f = "testFile.xlsx"
if f[-4:] == "xlsx":
    book = openpyxl.load_workbook(f)
    sheet = book.active
    for idx,row in enumerate(sheet.values):
        if row[0] == "some value":
            sheet.delete_rows(idx+1)
    book.save(f)

推荐阅读