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

使用openpyxl无法移除Excel整行设置的背景色,该如何解决?

解决openpyxl无法移除整行设置的背景色问题

问题原因

用LibreOffice Calc选中整行设置背景色时,是给行对象设置了默认填充样式,而非逐个单元格单独设置样式。你原来的代码只遍历修改了单个单元格的fill属性,不会影响行级别的默认样式,所以第1-3行的背景色无法被移除。

解决方案

需要同时处理行级默认填充和单元格单独填充:

  • 先修改目标行的默认填充样式,清除行级背景色
  • 再遍历单元格清除单独设置的填充(保留原逻辑,兼容混合场景)

完整代码示例

from openpyxl import load_workbook
from openpyxl.styles import PatternFill

src_fname_path = "./test_delete_row.3.xlsx"
new_fname_path = "./test_delete_row.delete.3.xlsx"
src_book = load_workbook(src_fname_path)
sheet = src_book['Sheet1']

# 1. 清除第1-3行的行级默认填充样式
for row_num in range(1, 4):
    row = sheet[row_num]
    row.fill = PatternFill()

# 2. 遍历所有单元格,清除单独设置的填充样式
for row in sheet:
    for cell in row:
        cell.fill = PatternFill()

src_book.save(new_fname_path)

补充说明

  • 如果需要清除整个工作表的所有行级样式,可以遍历sheet.iter_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 10:59:56