You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用openpyxl删除Excel行的同时清除其填充颜色?

解决openpyxl删除行后填充颜色残留的问题

当使用openpyxl的delete_rows方法删除行时,该方法仅移除行内的数据和单元格对象,但不会自动清除行级或单元格级的填充样式。要实现删除行的同时移除对应填充颜色,需要先手动清除目标行的填充样式,再执行删除操作。

解决方案代码

import openpyxl
from openpyxl.styles import PatternFill

src_fname_path = "./test_delete_row.xlsx"
new_fname_path = "./test_delete_row.delete.xlsx"

# 加载工作簿和工作表
src_book = openpyxl.load_workbook(src_fname_path)
sheet = src_book['Sheet1']

# 创建无填充的样式对象
no_fill = PatternFill(fill_type=None)

# 遍历目标行,清除每个单元格的填充样式
for row in sheet.iter_rows(min_row=1, max_row=3):
    for cell in row:
        cell.fill = no_fill

# 额外清除行级别的填充样式(若填充是应用在整行上)
for row_num in range(1, 4):
    sheet.row_dimensions[row_num].fill = no_fill

# 删除目标行
sheet.delete_rows(1, 3)

# 保存修改后的工作簿
src_book.save(new_fname_path)

关键说明

  • 清除单元格级填充:通过iter_rows遍历目标行的所有单元格,将每个单元格的填充样式重置为无填充(fill_type=None),覆盖单个单元格的填充设置。
  • 清除行级填充:部分场景下填充颜色是直接应用在整行的样式上,因此需要额外重置row_dimensions对应的填充样式,避免行级样式残留。
  • 执行顺序:必须先清除样式,再执行delete_rows操作,确保残留的样式被彻底移除后再删除行结构。

内容的提问来源于stack exchange,提问作者Oliver Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:57:37