Class: Axlsx::ConditionalFormatting

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

Overview

Note:

The recommended way to manage conditional formatting is via Worksheet#add_conditional_formatting

Conditional formatting allows styling of ranges based on functions

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ ConditionalFormatting

Creates a new Axlsx::ConditionalFormatting object

Parameters:

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

    a customizable set of options

Options Hash (options):

  • rules (Array)

    The rules to apply

  • sqref (String)

    The range to apply the rules to



24
25
26
27
28
29
# File 'lib/axlsx/workbook/worksheet/conditional_formatting.rb', line 24

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

Instance Attribute Details

#rulesArray

Rules to apply the formatting to. Can be either a hash of options to create a Axlsx::ConditionalFormattingRule, an array of hashes for multiple ConditionalFormattingRules, or an array of already created ConditionalFormattingRules.

Returns:

  • (Array)

See Also:



19
20
21
# File 'lib/axlsx/workbook/worksheet/conditional_formatting.rb', line 19

def rules
  @rules
end

#sqrefString

Range over which the formatting is applied, in "A1:B2" format

Returns:

  • (String)


11
12
13
# File 'lib/axlsx/workbook/worksheet/conditional_formatting.rb', line 11

def sqref
  @sqref
end

Instance Method Details

#add_rule(rule) ⇒ Object

Add a ConditionalFormattingRule. If a hash of options is passed in create a rule on the fly.

Parameters:

See Also:



54
55
56
57
58
59
60
# File 'lib/axlsx/workbook/worksheet/conditional_formatting.rb', line 54

def add_rule(rule)
  if rule.is_a? Axlsx::ConditionalFormattingRule
    @rules << rule
  elsif rule.is_a? Hash
    @rules << ConditionalFormattingRule.new(rule)
  end
end

#add_rules(rules) ⇒ Object

Add Conditional Formatting Rules to this object. Rules can either be already created Axlsx::ConditionalFormattingRule elements or hashes of options for automatic creation. If rules is a hash instead of an array, assume only one rule being added.

Examples:

This would apply formatting "1" to cells > 20, and formatting "2" to cells < 1

conditional_formatting.add_rules [
    { :type => :cellIs, :operator => :greaterThan, :formula => "20", :dxfId => 1, :priority=> 1 },
    { :type => :cellIs, :operator => :lessThan, :formula => "10", :dxfId => 2, :priority=> 2 } ]

Parameters:

  • rules (Array|Hash)

    the rules to apply, can be just one in hash form

See Also:



43
44
45
46
47
48
# File 'lib/axlsx/workbook/worksheet/conditional_formatting.rb', line 43

def add_rules(rules)
  rules = [rules] if rules.is_a? Hash
  rules.each do |rule|
    add_rule rule
  end
end

#to_xml_string(str = '') ⇒ String

Serializes the conditional formatting element

Examples:

Conditional Formatting XML looks like:

<conditionalFormatting sqref="E3:E9">
    <cfRule type="cellIs" dxfId="0" priority="1" operator="greaterThan">
         <formula>0.5</formula>
    </cfRule>
</conditionalFormatting>

Parameters:

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

Returns:

  • (String)


76
77
78
79
80
# File 'lib/axlsx/workbook/worksheet/conditional_formatting.rb', line 76

def to_xml_string(str = '')
  str << '<conditionalFormatting sqref="' << sqref << '">'
  str << rules.collect{ |rule| rule.to_xml_string }.join(' ')
  str << '</conditionalFormatting>'
end