如何在 openpyxl 的条件格式中排除空白单元格?
How to exclude blank cell in conditional formatting in openpyxl?
我在 openpyxl 中使用条件格式,但在尝试排除空白单元格时遇到了困难。我有一列数字,我使用 CellisRule 对其进行了格式化。我使用的代码如下。
ws2.conditional_formatting.add('C3:C25',CellIsRule(operator='lessThan', formula=['85'], stopIfTrue=True, fill=redFill,font=whiteText))
ws2.conditional_formatting.add('C3:C25',CellIsRule(operator='greaterThan', formula=['89.99'], stopIfTrue=True, fill=greenFill))
ws2.conditional_formatting.add('C3:C25',CellIsRule(operator='between', formula=['85', '89.99'], stopIfTrue=True, fill=yellowFill))
我尝试使用 FormulaRule 但不知道如何用于公式。
更新:
不使用条件格式,而是使用 for 循环。
for row in ws2.iter_rows("C3:C25"):
for cell in row:
if cell.value == None:
set_stylewhite(cell)
elif cell.value >= 90:
set_stylegreen(cell)
elif cell.value <= 85:
set_stylered(cell)
else:
set_styleyellow(cell)
如果您使用公式,则应使用 expression
类型规则。一般来说,最好分别编写规则和样式:
from openpyxl import Workbook
from openpyxl.formatting.rule import Rule
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.styles import Font, PatternFill
red_text = Font(color="9C0006")
red_fill = PatternFill(bgColor="FFC7CE")
dxf = DifferentialStyle(font=red_text, fill=red_fill)
r = Rule(type="expression", dxf=dxf)
r.formula = ["NOT(ISBLANK(A1))"]
wb = Workbook()
ws = wb.active
for v in range(10):
ws.append([v])
ws['A4'] = None
ws.conditional_formatting.add("A1:A10".format(ws.max_row), r)
wb.save("sample.xlsx")
我在 openpyxl 中使用条件格式,但在尝试排除空白单元格时遇到了困难。我有一列数字,我使用 CellisRule 对其进行了格式化。我使用的代码如下。
ws2.conditional_formatting.add('C3:C25',CellIsRule(operator='lessThan', formula=['85'], stopIfTrue=True, fill=redFill,font=whiteText))
ws2.conditional_formatting.add('C3:C25',CellIsRule(operator='greaterThan', formula=['89.99'], stopIfTrue=True, fill=greenFill))
ws2.conditional_formatting.add('C3:C25',CellIsRule(operator='between', formula=['85', '89.99'], stopIfTrue=True, fill=yellowFill))
我尝试使用 FormulaRule 但不知道如何用于公式。
更新:
不使用条件格式,而是使用 for 循环。
for row in ws2.iter_rows("C3:C25"):
for cell in row:
if cell.value == None:
set_stylewhite(cell)
elif cell.value >= 90:
set_stylegreen(cell)
elif cell.value <= 85:
set_stylered(cell)
else:
set_styleyellow(cell)
如果您使用公式,则应使用 expression
类型规则。一般来说,最好分别编写规则和样式:
from openpyxl import Workbook
from openpyxl.formatting.rule import Rule
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.styles import Font, PatternFill
red_text = Font(color="9C0006")
red_fill = PatternFill(bgColor="FFC7CE")
dxf = DifferentialStyle(font=red_text, fill=red_fill)
r = Rule(type="expression", dxf=dxf)
r.formula = ["NOT(ISBLANK(A1))"]
wb = Workbook()
ws = wb.active
for v in range(10):
ws.append([v])
ws['A4'] = None
ws.conditional_formatting.add("A1:A10".format(ws.max_row), r)
wb.save("sample.xlsx")