class Axlsx::Table

Table @note Worksheet#add_table is the recommended way to create tables for your worksheets. @see README for examples

Attributes

name[R]

The name of the table. @return [String]

ref[R]

The reference to the table data @return [String]

style[R]

The style for the table. @return [TableStyle]

Public Class Methods

new(ref, sheet, options={}) { |self| ... } click to toggle source

Creates a new Table object @param [String] ref The reference to the table data like 'A1:G24'. @param [Worksheet] sheet The sheet containing the table data. @option options [Cell, String] name @option options [TableStyle] style

# File lib/axlsx/workbook/worksheet/table.rb, line 15
def initialize(ref, sheet, options={})
  @ref = ref
  @sheet = sheet
  @style = nil
  @sheet.workbook.tables << self
  @table_style_info = TableStyleInfo.new(options[:style_info]) if options[:style_info]
  @name = "Table#{index+1}"
  parse_options options
  yield self if block_given?
end

Public Instance Methods

index() click to toggle source

The index of this chart in the workbooks charts collection @return [Integer]

# File lib/axlsx/workbook/worksheet/table.rb, line 40
def index
  @sheet.workbook.tables.index(self)
end
name=(v) click to toggle source

The name of the Table. @param [String, Cell] v @return [Title]

# File lib/axlsx/workbook/worksheet/table.rb, line 60
def name=(v)
  DataTypeValidator.validate :table_name, [String], v
  if v.is_a?(String)
    @name = v
  end
end
pn() click to toggle source

The part name for this table @return [String]

# File lib/axlsx/workbook/worksheet/table.rb, line 46
def pn
  "#{TABLE_PN % (index+1)}"
end
rId() click to toggle source

The relationship id for this table. @see Relationship#Id @return [String]

# File lib/axlsx/workbook/worksheet/table.rb, line 53
def rId
  @sheet.relationships.for(self).Id
end
table_style_info() click to toggle source

TableStyleInfo for the table. initialization can be fed via the :style_info option

# File lib/axlsx/workbook/worksheet/table.rb, line 69
def table_style_info
  @table_style_info ||= TableStyleInfo.new
end
to_xml_string(str = '') click to toggle source

Serializes the object @param [String] str @return [String]

# File lib/axlsx/workbook/worksheet/table.rb, line 76
def to_xml_string(str = '')
  str << '<?xml version="1.0" encoding="UTF-8"?>'
  str << ('<table xmlns="' << XML_NS << '" id="' << (index+1).to_s << '" name="' << @name << '" displayName="' << @name.gsub(/\s/,'_') << '" ')
  str << ('ref="' << @ref << '" totalsRowShown="0">')
  str << ('<autoFilter ref="' << @ref << '"/>')
  str << ('<tableColumns count="' << header_cells.length.to_s << '">')
  header_cells.each_with_index do |cell,index|
    str << ('<tableColumn id ="' << (index+1).to_s << '" name="' << cell.clean_value << '"/>')
  end
  str << '</tableColumns>'
  table_style_info.to_xml_string(str)
  str << '</table>'
end

Private Instance Methods

header_cells() click to toggle source

get the header cells (hackish)

# File lib/axlsx/workbook/worksheet/table.rb, line 97
def header_cells
  header = @ref.gsub(/^(\w+?)(\d+)\:(\w+?)\d+$/, '\1\2:\3\2')
  @sheet[header]
end