python - 使用 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 上运行。
解决方案
这是根据值条件删除行的解决方案:
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)
推荐阅读
- python - 尝试根据用户输入将列表中项目的总成本相加
- typescript - Octokit:无法创建多个标签
- amazon-web-services - eks fluent-bit 到 elasticsearch 超时
- angular - 如何检查在 android IAB 或 android 设备浏览器中运行的 Angular Web 应用程序?
- node.js - 如何使用 Typescript 在 Twilio API 的电话验证中传递发布请求
- javascript - JavaScript 正则表达式返回两个没有 /g 标志的匹配项
- python - 更改 x 轴标记 Matplotlib?
- ruby-on-rails - 设计让我将新密码更改为空
- django - Django HTTPS Elastic Beanstalk
- r - R:对 sum() 的简单调用出错,我无法重现 - 我怎样才能找到问题对象是什么?