Class: Axlsx::ConditionalFormattingRule

Inherits:
Object
  • Object
show all
Defined in:
lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb

Overview

Note:

The recommended way to manage these rules is via Worksheet#add_conditional_formatting

Conditional formatting rules specify formulas whose evaluations format cells

Constant Summary collapse

CHILD_ELEMENTS =

instance values that must be serialized as their own elements - e.g. not attributes.

[:formula, :color_scale, :data_bar, :icon_set]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ ConditionalFormattingRule

Creates a new Conditional Formatting Rule object

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • type (Symbol)

    The type of this formatting rule

  • aboveAverage (Boolean)

    This is an aboveAverage rule

  • bottom (Boolean)

    This is a bottom N rule.

  • dxfId (Integer)

    The formatting id to apply to matches

  • equalAverage (Boolean)

    Is the aboveAverage or belowAverage rule inclusive

  • priority (Integer)

    The priority of the rule, 1 is highest

  • operator (Symbol)

    Which operator to apply

  • text (String)

    The value to apply a text operator against

  • percent (Boolean)

    If a top/bottom N rule, evaluate as N% rather than N

  • rank (Integer)

    If a top/bottom N rule, the value of N

  • stdDev (Integer)

    The number of standard deviations above or below the average to match

  • stopIfTrue (Boolean)

    Stop evaluating rules after this rule matches

  • timePeriod (Symbol)

    The time period in a date occuring... rule

  • formula (String)

    The formula to match against in i.e. an equal rule



147
148
149
150
151
152
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 147

def initialize(options={})
  @color_scale = @data_bar = @icon_set = @formula = nil
  options.each do |o|
    self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
  end
end

Instance Attribute Details

#aboveAverageBoolean

Above average rule Indicates whether the rule is an "above average" rule. True indicates 'above average'. This attribute is ignored if type is not equal to aboveAverage.

Returns:

  • (Boolean)


32
33
34
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 32

def aboveAverage
  @aboveAverage
end

#bottomBoolean

Bottom N rule

Returns:

  • (Boolean)


36
37
38
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 36

def bottom
  @bottom
end

#dxfIdInteger

Differential Formatting Id

Returns:

  • (Integer)


40
41
42
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 40

def dxfId
  @dxfId
end

#equalAverageBoolean

Equal Average Flag indicating whether the 'aboveAverage' and 'belowAverage' criteria is inclusive of the average itself, or exclusive of that value.

Returns:

  • (Boolean)


47
48
49
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 47

def equalAverage
  @equalAverage
end

#formulaString

Formula

Returns:

  • (String)


16
17
18
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 16

def formula
  @formula
end

#operatorSymbol

Operator The operator in a "cell value is" conditional formatting rule. This attribute is ignored if type is not equal to cellIs

Operator must be one of lessThan, lessThanOrEqual, equal, notEqual, greaterThanOrEqual, greaterThan, between, notBetween, containsText, notContains, beginsWith, endsWith

Returns:

  • (Symbol)


57
58
59
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 57

def operator
  @operator
end

#percentBoolean

percent (Top 10 Percent) indicates whether a "top/bottom n" rule is a "top/bottom n percent" rule. This attribute is ignored if type is not equal to top10.

Returns:

  • (Boolean)


78
79
80
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 78

def percent
  @percent
end

#priorityInteger

Priority The priority of this conditional formatting rule. This value is used to determine which format should be evaluated and rendered. Lower numeric values are higher priority than higher numeric values, where '1' is the highest priority.

Returns:

  • (Integer)


65
66
67
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 65

def priority
  @priority
end

#rankInteger

rank (Rank) The value of "n" in a "top/bottom n" conditional formatting rule. This attribute is ignored if type is not equal to top10.

Returns:

  • (Integer)


84
85
86
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 84

def rank
  @rank
end

#stdDevInteger

stdDev (StdDev) The number of standard deviations to include above or below the average in the conditional formatting rule. This attribute is ignored if type is not equal to aboveAverage. If a value is present for stdDev and the rule type = aboveAverage, then this rule is automatically an "above or below N standard deviations" rule.

Returns:

  • (Integer)


94
95
96
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 94

def stdDev
  @stdDev
end

#stopIfTrueBoolean

stopIfTrue (Stop If True) If this flag is '1', no rules with lower priority shall be applied over this rule, when this rule evaluates to true.

Returns:

  • (Boolean)


100
101
102
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 100

def stopIfTrue
  @stopIfTrue
end

#textString

Text used in a "text contains" conditional formatting rule.

Returns:

  • (String)


71
72
73
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 71

def text
  @text
end

#timePeriodObject

timePeriod (Time Period) The applicable time period in a "date occurring…" conditional formatting rule. This attribute is ignored if type is not equal to timePeriod. Valid types are today, yesterday, tomorrow, last7Days, thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek



108
109
110
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 108

def timePeriod
  @timePeriod
end

#typeSymbol

Type (ST_CfType) options are expression, cellIs, colorScale, dataBar, iconSet, top10, uniqueValues, duplicateValues, containsText, notContainsText, beginsWith, endsWith, containsBlanks, notContainsBlanks, containsErrors, notContainsErrors, timePeriod, aboveAverage

Returns:

  • (Symbol)


25
26
27
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 25

def type
  @type
end

Instance Method Details

#color_scaleColorScale

colorScale (Color Scale) The color scale to apply to this conditional formatting

Returns:



114
115
116
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 114

def color_scale
  @color_scale ||= ColorScale.new
end

#color_scale=(v) ⇒ Object

See Also:



184
185
186
187
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 184

def color_scale=(v)
  Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.color_scale', ColorScale, v
  @color_scale = v
end

#data_barDataBar

dataBar (Data Bar) The data bar to apply to this conditional formatting

Returns:



121
122
123
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 121

def data_bar
  @data_bar ||= DataBar.new
end

#data_bar=(v) ⇒ Object

See Also:



190
191
192
193
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 190

def data_bar=(v)
  Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.data_bar', DataBar, v
  @data_bar = v
end

#icon_setIconSet

iconSet (Icon Set) The icon set to apply to this conditional formatting

Returns:



128
129
130
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 128

def icon_set
  @icon_set ||= IconSet.new
end

#icon_set=(v) ⇒ Object

See Also:



196
197
198
199
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 196

def icon_set=(v)
  Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.icon_set', IconSet, v
  @icon_set = v
end

#to_xml_string(str = '') ⇒ String

Serializes the conditional formatting rule

Parameters:

  • str (String) (defaults to: '')

Returns:

  • (String)


205
206
207
208
209
210
211
212
213
214
# File 'lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb', line 205

def to_xml_string(str = '')
  str << '<cfRule '
  str << instance_values.map { |key, value| '' << key << '="' << value.to_s << '"' unless CHILD_ELEMENTS.include?(key.to_sym) }.join(' ')
  str << '>'
  str << '<formula>' << self.formula << '</formula>' if @formula
  @color_scale.to_xml_string(str) if @color_scale && @type == :colorScale
  @data_bar.to_xml_string(str) if @data_bar && @type == :dataBar
  @icon_set.to_xml_string(str) if @icon_set && @type == :iconSet
  str << '</cfRule>'
end