用python处理excel的基本语法_Python操作Excel学习笔记(28):条件格式

excelperfect

Excel支持3种不同类型的条件格式:内置、标准和自定义。内置条件格式将特定规则与预定义样式相组合。标准条件格式将特定规则与自定义格式相组合。此外,可以定义自定义公式来应用使用不同样式的自定义格式。

创建条件格式的基本语法为:

>>>fromopenpyxl.formattingimportRule

>>>fromopenpyxl.stylesimportFont, PatternFill,Border

>>>dxf = DifferentialStyle(font=Font(bold=True), fill=PatternFill(start_color='EE1111',end_color='EE1111'))

>>>rule = Rule(type='cellIs', dxf=dxf,formula=["10"])

内置格式

内置条件格式有:

ColorScale(色阶)

IconSet(图标集)

DataBar(数据条)

内置格式包含一系列格式设置,这些设置将类型与整数组合以进行比较。可能的类型有:“数字”、“百分比”、“最大值”、“最小值”、“公式”、“百分点值”。

ColorScale(色阶)

可以使用2种或3种颜色的色阶。2个色阶产生从一种颜色到另一种颜色的渐变,3个色阶使用额外颜色产生2种颜色渐变。

创建色阶规则的完整语法是:

>>>fromopenpyxl.stylesimportColor

>>>first = FormatObject(type='min')

>>>last = FormatObject(type='max')

>>>#颜色与格式对象匹配

>>>colors= [Color('AA0000'), Color('00AA00')]

>>>cs2 = ColorScale(cfvo=[first, last], color=colors)

>>>#三色阶将扩展序列

>>>mid = FormatObject(type='num', val=40)

>>>colors.insert(1, Color('00AA00'))

>>>cs3 = ColorScale(cfvo=[first, mid, last], color=colors)

>>>#创建使用色阶的规则

>>>rule = Rule(type='colorScale',colorScale=cs3)

下面是创建色阶规则的便利的方法:

>>>rule = ColorScaleRule(start_type='percentile',

start_value=10,

start_color='FFAA0000',

mid_type='percentile',

mid_value=50,

mid_color='FF0000AA',

end_type='percentile',

end_value=90,

end_color='FF00AA00')

IconSet(图标)

从下列图标集中选择:“3Arrows三向箭头”、“3ArrowsGray三向箭头(灰色)”、“3Flags三色旗”、“3TrafficLights1三色交通灯1”、“3TrafficLights2三色交通灯2”、“3Signs三标志”、“3Symbols三个符号”、“3Symbols2三个符号2”、“4Arrows四向箭头”、“4ArrowsGray四向箭头(灰色)”、“4RedToBlack红黑渐变”、“4Rating四等级”、“4TrafficLights四色交通灯”、“5Arrows五向箭头”、“5ArrowsGray五向箭头(灰色)”、“5Rating五等级”、“5Quarters五象限图”。

创建图标规则的完整语法是:

>>>first = FormatObject(type='percent', val=0)

>>>second = FormatObject(type='percent', val=33)

>>>third = FormatObject(type='percent', val=67)

>>>iconset = IconSet(iconSet='3TrafficLights1',cfvo=[first, second, third], showValue=None, percent=None,reverse=None)

>>>#将图标集赋给规则

>>>rule= Rule(type='iconSet',iconSet=iconset)

下面是创建图标集规则的便利方法:

>>>rule = IconSetRule('5Arrows','percent', [10, 20, 30, 40, 50], showValue=None, percent=None, reverse=None)

DataBar(数据条)

当前,openpyxl支持原始规范中定义的数据条,在以后的扩展中将会添加边框和方向。

创建数据条规则的完整语法是:

>>>first = FormatObject(type='min')

>>>second= FormatObject(type='max')

>>>data_bar= DataBar(cfvo=[first, second], color="638EC6",showValue=None, minLength=None, maxLength=None)

>>> #将数据条赋给规则

>>>rule= Rule(type='dataBar',dataBar=data_bar)

下面是创建数据条规则的便利方法:

>>>rule = DataBarRule(start_type='percentile',

start_value=10,

end_type='percentile',

end_value='90',

color="FF638EC6",

showValue="None",

minLength=None,

maxLength=None)

标准条件格式

标准条件格式有:

平均值

百分比

唯一值或重复值

等级

示例

下面是在单元格区域中应用条件格式的示例代码:

fromopenpyxlimportWorkbook

fromopenpyxl.stylesimportColor, PatternFill, Font, Border

fromopenpyxl.formattingimportRule

wb= Workbook()

ws= wb.active

#创建填充

redFill= PatternFill(start_color='EE1111',

end_color='EE1111',

fill_type='solid')

#添加二色色阶

#采用Excel'RRGGBB'样式的颜色

ws.conditional_formatting.add('A1:A10',

ColorScaleRule(start_type='min',

start_color='AA0000',

end_type='max',

end_color='00AA00')

)

#添加三色色阶

ws.conditional_formatting.add('B1:B10',

ColorScaleRule(start_type='percentile',

start_value=10,

start_color='AA0000',

mid_type='percentile',

mid_value=50,

mid_color='0000AA',

end_type='percentile',

end_value=90,

end_color='00AA00')

)

#基于单元格比较添加条件格式

# addCellIs(range_string, operator, formula, stopIfTrue, wb,font, border, fill)

#如果单元格小于'公式'则应用格式

ws.conditional_formatting.add('C2:C10',

CellIsRule(operator='lessThan',

formula=['C$1'],

stopIfTrue=True,

fill=redFill))

#如果单元格在'公式'之间则应用格式

ws.conditional_formatting.add('D2:D10',

CellIsRule(operator='between',

formula=['1','5'],

stopIfTrue=True,

fill=redFill))

#使用公式的格式

ws.conditional_formatting.add('E1:E10',

FormulaRule(formula=['ISBLANK(E1)'],

stopIfTrue=True,

fill=redFill))

#除了2个色阶和3个色阶外,格式规则还采用字体、边填和填充样式

myFont= Font()

myBorder= Border()

ws.conditional_formatting.add('E1:E10',

FormulaRule(formula=['E1=0'],

font=myFont,

border=myBorder,

fill=redFill))

#使用指定公式突出显示包含特定文本的单元格

red_text= Font(color="9C0006")

red_fill= PatternFill(bgColor="FFC7CE")

dxf= DifferentialStyle(font=red_text, fill=red_fill)

rule= Rule(type="containsText",operator="containsText",

text="highlight",dxf=dxf)

rule.formula= ['NOT(ISERROR(SEARCH("完美Excel",A1)))']

ws.conditional_formatting.add('A1:F40', rule)

wb.save("cftest.xlsx")

运行代码后的效果如下图1所示。

图1

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值