Class: Axlsx::DefinedName

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

Overview

This element defines the defined names that are defined within this workbook. Defined names are descriptive text that is used to represents a cell, range of cells, formula, or constant value. Use easy-to-understand names, such as Products, to refer to hard to understand ranges, such as Sales!C20:C30. A defined name in a formula can make it easier to understand the purpose of the formula. Names are available to any sheet. Names can also be used to represent formulas or values that do not change (constants).

You can also link to a defined name in another workbook, or define a name that refers to cells in another workbook.

A compliant producer or consumer considers a defined name in the range A1-XFD1048576 to be an error. All other names outside this range can be defined as names and overrides a cell reference if an ambiguity exists.

Examples:

The formula =SUM(FirstQuarterSales) might be easier to identify than =SUM(C20:C30
If the name ProjectedSales refers to the range A20:A30 on the first worksheet in a workbook, 
you can use the name ProjectedSales on any other sheet in the same workbook to refer to range A20:A30 on the first worksheet.
The name SalesTax can be used to represent the sales tax amount (such as 6.2 percent) applied to sales transactions.
The formula =SUM(Sales.xls!ProjectedSales) refers to the named range ProjectedSales in the workbook named Sales.
For clarification: LOG10 is always a cell reference, LOG10() is always formula, LOGO1000 can be a defined name that overrides a cell reference.

Constant Summary collapse

STRING_ATTRIBUTES =

string attributes that will be added when this class is evaluated

[:short_cut_key, :status_bar, :help, :description, :custom_menu, :comment]
BOOLEAN_ATTRIBUTES =

boolean attributes that will be added when this class is evaluated

[:workbook_parameter, :publish_to_server, :xlm, :vb_proceedure, :function, :hidden]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(formula, options = {}) ⇒ DefinedName

creates a new DefinedName.

Parameters:

  • formula (String)
    • the formula the defined name references
  • options (Hash) (defaults to: {})
    • A hash of key/value pairs that will be mapped to this instances attributes.
  • [String] (Hash)

    a customizable set of options

  • [Boolean] (Hash)

    a customizable set of options

  • [Integer] (Hash)

    a customizable set of options



97
98
99
100
101
102
# File 'lib/axlsx/workbook/defined_name.rb', line 97

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

Instance Attribute Details

#formulaObject (readonly)

The formula this defined name references



160
161
162
# File 'lib/axlsx/workbook/defined_name.rb', line 160

def formula
  @formula
end

#local_sheet_idObject

Returns the value of attribute local_sheet_id.



103
104
105
# File 'lib/axlsx/workbook/defined_name.rb', line 103

def local_sheet_id
  @local_sheet_id
end

#nameObject

Returns the value of attribute name.



152
153
154
# File 'lib/axlsx/workbook/defined_name.rb', line 152

def name
  @name
end

Instance Method Details

#to_xml_string(str = '') ⇒ Object

Raises:

  • (ArgumentError)


162
163
164
165
166
167
168
169
170
171
172
# File 'lib/axlsx/workbook/defined_name.rb', line 162

def to_xml_string(str='')
  raise ArgumentError, 'you must specify the name for this defined name. Please read the documentation for Axlsx::DefinedName for more details' unless name 
  str << '<definedName'
  instance_values.each do |name, value| 
    unless name == 'formula'
      str << ' ' << Axlsx::camel(name, false) << "='#{value}'"
    end
  end
  str << '>' << @formula
  str << '</definedName>'
end