设置条件格式
func (f *File) SetConditionalFormat(sheet, area, formatSet string) error
根据给定的工作表名称、单元格坐标区域和格式参数,为单元格值创建条件格式设置规则。条件格式是 Office Excel 的一项功能,它允许您根据特定条件将格式应用于单元格或一系列单元格。
格式参数 type
选项是必需的参数,它没有默认值。允许的类型值及其相关参数是:
类型 | 参数 |
---|---|
cell | criteria |
value | |
minimum | |
maximum | |
date | criteria |
value | |
minimum | |
maximum | |
time_period | criteria |
text | criteria |
value | |
average | criteria |
duplicate | (none) |
unique | (none) |
top | criteria |
value | |
bottom | criteria |
value | |
blanks | (none) |
no_blanks | (none) |
errors | (none) |
no_errors | (none) |
2_color_scale | min_type |
max_type | |
min_value | |
max_value | |
min_color | |
max_color | |
3_color_scale | min_type |
mid_type | |
max_type | |
min_value | |
mid_value | |
max_value | |
min_color | |
mid_color | |
max_color | |
data_bar | min_type |
max_type | |
min_value | |
max_value | |
bar_color | |
formula | criteria |
criteria
参数用于设置单元格数据的条件格式运算符。它没有默认值,同常与 {"type":"cell"}
一起使用,支持的参数为:
文本描述字符 | 符号表示 |
---|---|
between | |
not between | |
equal to | == |
not equal to | != |
greater than | > |
less than | < |
greater than or equal to | >= |
less than or equal to | <= |
可以使用上面表格第一列中的 Office Excel 文本描述字符,或者符号表示方法(between
与 not between
没有符号表示法)作为条件格式运算符。 下面的相关部分显示了其他条件格式类型的特定标准。
value
:该值通常与 criteria
参数一起使用,可以用确定的值作为设置单元格条件格式的条件参数:
f.SetConditionalFormat("Sheet1", "D1:D10", fmt.Sprintf(`[{"type":"cell","criteria":">","format":%d,"value":"6"}]`, format))
value
属性也可以是单元格引用:
f.SetConditionalFormat("Sheet1", "D1:D10", fmt.Sprintf(`[{"type":"cell","criteria":">","format":%d,"value":"$C$1"}]`, format))
类型:format
- format
参数用于指定满足条件格式标准时将应用于单元格的格式。该参数可以通过 NewConditionalStyle()
方法来创建:
format, err = f.NewConditionalStyle(`{"font":{"color":"#9A0511"},"fill":{"type":"pattern","color":["#FEC7CE"],"pattern":1}}`)
if err != nil {
fmt.Println(err)
}
f.SetConditionalFormat("Sheet1", "A1:A10", fmt.Sprintf(`[{"type":"cell","criteria":">","format":%d,"value":"6"}]`, format))
注意:在 Office Excel 中,条件格式叠加在现有单元格格式上,并非所有单元格格式属性都可以修改。无法在条件格式中修改的属性包括:字体名称、字体大小、上标和下标、对角边框、所有对齐属性和所有保护属性。
Office Excel 中内置了一些与条件格式一起使用的默认样式。可以使用以下 excelize 设置实现这些样式效果:
// 浅红填充色深色文本代表较差
format1, err = f.NewConditionalStyle(`{"font":{"color":"#9A0511"},"fill":{"type":"pattern","color":["#FEC7CE"],"pattern":1}}`)
// 黄填充色深黄色文本代表一般
format2, err = f.NewConditionalStyle(`{"font":{"color":"#9B5713"},"fill":{"type":"pattern","color":["#FEEAA0"],"pattern":1}}`)
// 绿填充色深绿色文本代表较好
format3, err = f.NewConditionalStyle(`{"font":{"color":"#09600B"},"fill":{"type":"pattern","color":["#C7EECF"],"pattern":1}}`)
类型:minimum
- 当条件格式 criteria
为 between
或 not between
时,minimum
参数用于设置下限值。
// 高亮单元格条件格式规则: between...
f.SetConditionalFormat("Sheet1", "A1:A10", fmt.Sprintf(`[{"type":"cell","criteria":"between","format":%d,"minimum":"6","maximum":"8"}]`, format))
类型:maximum
- 当条件格式 criteria
为 between
或 not between
时,maximum
参数用于设置上限值,参考上面的例子。
类型:average
- 平均类型用于指定 Office Excel “最前最后规则”中“经典”样式的“仅高于或低于平均值的数值设置格式”条件格式:
// 最前最后规则:高于平均值...
f.SetConditionalFormat("Sheet1", "A1:A10", fmt.Sprintf(`[{"type":"average","criteria":"=","format":%d, "above_average": true}]`, format1))
// 最前最后规则:低于平均值...
f.SetConditionalFormat("Sheet1", "B1:B10", fmt.Sprintf(`[{"type":"average","criteria":"=","format":%d, "above_average": false}]`, format2))
类型:duplicate
- 用于设置“突出显示单元格规则”中的“重复值 …”:
// 突出显示单元格规则: 重复值...
f.SetConditionalFormat("Sheet1", "A1:A10", fmt.Sprintf(`[{"type":"duplicate","criteria":"=","format":%d}]`, format))
类型:unique
- 用于设置“突出显示单元格规则”中“只为以下内容的单元格设置格式”的“特定文本”:
// 突出显示单元格规则,只为以下内容的单元格设置格式: 特定文本 不等于...
f.SetConditionalFormat("Sheet1", "A1:A10", fmt.Sprintf(`[{"type":"unique","criteria":"=","format":%d}]`, format))
类型:top
- 用于设置“最前最后规则”中的“前 10 项…”或“前 10% …”:
// 最前最后规则: 前 10 项...
f.SetConditionalFormat("Sheet1", "H1:H10", fmt.Sprintf(`[{"type":"top","criteria":"=","format":%d,"value":"6"}]`, format))
设置带有百分比条件的条件格式:
f.SetConditionalFormat("Sheet1", "A1:A10", fmt.Sprintf(`[{"type":"top","criteria":"=","format":%d,"value":"6","percent":true}]`, format))
类型:2_color_scale
- 用于设置带有“双色刻度”的“色阶样式”条件格式:
// 色阶:双色刻度
f.SetConditionalFormat("Sheet1", "A1:A10", `[{"type":"2_color_scale","criteria":"=","min_type":"min","max_type":"max","min_color":"#F8696B","max_color":"#63BE7B"}]`)
双色刻度色阶条件格式可选参数:min_type
、max_type
、min_value
、max_value
、min_color
和 max_color
。
类型:3_color_scale
- 用于设置带有“三色刻度”的“色阶样式”条件格式:
// 色阶:三色刻度
f.SetConditionalFormat("Sheet1", "A1:A10", `[{"type":"3_color_scale","criteria":"=","min_type":"min","mid_type":"percentile","max_type":"max","min_color":"#F8696B","mid_color":"#FFEB84","max_color":"#63BE7B"}]`)
三色刻度色阶条件格式可选参数: min_type
、mid_type
、max_type
、min_value
、mid_value
、max_value
、min_color
、mid_color
和 max_color
。
类型:data_bar
- 用于设置“数据条”类型的条件格式。
min_type
- 参数 min_type
在条件格式类型为 2_color_scale
、3_color_scale
或 data_bar
时可用。参数 mid_type
在条件格式类型为 3_color_scale
时可用。例如:
// 数据条:渐变填充
f.SetConditionalFormat("Sheet1", "K1:K10", `[{"type":"data_bar", "criteria":"=", "min_type":"min","max_type":"max","bar_color":"#638EC6"}]`)
参数 min/mid/max_types
可选值列表:
参数 | 类型 |
---|---|
min | 最低值(仅用于 min_type ) |
num | 数字 |
percent | 百分比 |
percentile | 百分点值 |
formula | 公式 |
max | 最高值(仅用于 max_type ) |
mid_type
- 当条件格式类型为 3_color_scale
时使用,与 min_type
用法相同,参考上面的表格。
max_type
- 与 min_type
用法相同,参考上面的表格。
min_value
- 参数 min_value
和 max_value
在条件格式类型为 2_color_scale
、3_color_scale
或 data_bar
时可用。参数 mid_value
在条件格式类型为 3_color_scale
时可用。
mid_value
- 在条件格式类型为 3_color_scale
时可用,与 min_value
的用法相同,参考上述文档。
max_value
- 与 min_value
的用法相同,参考上述文档。
min_color
- 参数 min_color
和 max_color
在条件格式类型为 2_color_scale
、3_color_scale
或 data_bar
时可用。参数 mid_color
在条件格式类型为 3_color_scale
时可用。例如:
// 色阶:三色刻度
f.SetConditionalFormat("Sheet1", "B1:B10", `[{"type":"3_color_scale","criteria":"=","min_type":"min","mid_type":"percentile","max_type":"max","min_color":"#F8696B","mid_color":"#FFEB84","max_color":"#63BE7B"}]`)
mid_color
- 当条件格式类型为 3_color_scale
时使用。与 min_color
用法相同,参考上述文档。
max_color
- 与 min_color
用法相同,参考上述文档。
bar_color
- 当条件格式类型为 data_bar
时使用。与 min_color
用法相同,参考上述文档。