class Axlsx::Table
Table
@note Worksheet#add_table
is the recommended way to create tables for your worksheets. @see README for examples
Attributes
The name of the table. @return [String]
The reference to the table data @return [String]
The style for the table. @return [TableStyle]
Public Class Methods
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
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
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
The part name for this table @return [String]
# File lib/axlsx/workbook/worksheet/table.rb, line 46 def pn "#{TABLE_PN % (index+1)}" end
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
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
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.value << '"/>') end str << '</tableColumns>' table_style_info.to_xml_string(str) str << '</table>' end
Private Instance Methods
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