条件格式不起作用,而是格式化所有单元格

问题描述 投票:0回答:1

我正在使用 openpyxl 我只想更改行中所有单元格的颜色字体(如果特定列的单元格不是 None 或 !=)。然而,经过多次尝试修改我的代码。结果会格式化所有单元格。

col_check = sheet.max_row
red_font = Font(color='FF0000')
for row in range(row+1,col_check):
    if sheet.cell(row=row+1,column=col_check).value !='':
        for col in range(col_check+1):
           sheet.cell(row=row+1,column=col).font = red_font

尝试对我的代码进行不同的变体,但我仍然得到相同的结果。

format openpyxl conditional-formatting
1个回答
0
投票

对于

ws.iter_rows()
,默认情况下起始行是第一行 (1),起始列是第一列 (1)。结束行将为
ws.max_row
,结束列将为
ws.max_col

row[0].value
是当前行 A 列单元格中的值,
row[1].value
是当前行 B 列单元格中的值...等等

使用以下代码;
对于每一行,如果 A 列中的单元格具有任何值,则该行中的所有单元格的字体都会更改为红色。
如果 A 列中的单元格为“无”,则单元格字体不会更改。

您可以更改

if row[0].value is not None
来指代您要检查的“特定列”是否为“无”。

from openpyxl import load_workbook
from openpyxl.styles import Font


wb = load_workbook('foo.xlsx')
ws = wb['Sheet1']

for row in ws.iter_rows():
    if row[0].value is not None:
        for cell in row:
            cell.font = Font(color='FF0000')

wb.save('foo2.xlsx')
© www.soinside.com 2019 - 2024. All rights reserved.