Class: Axlsx::Row
- Inherits:
-
Object
- Object
- Axlsx::Row
- Defined in:
- lib/axlsx/workbook/worksheet/row.rb
Overview
The recommended way to manage rows and cells is to use Worksheet#add_row
A Row is a single row in a worksheet.
Instance Attribute Summary collapse
-
#cells ⇒ SimpleTypedList
readonly
The cells this row holds.
-
#height ⇒ Float
The height of this row in points, if set explicitly.
-
#worksheet ⇒ Worksheet
readonly
The worksheet this row belongs to.
Instance Method Summary collapse
-
#add_cell(value = "", options = {}) ⇒ Cell
Adds a singel sell to the row based on the data provided and updates the worksheet’s autofit data.
-
#custom_height? ⇒ Boolean
true if the row height has been manually set.
-
#index ⇒ Integer
The index of this row in the worksheet.
-
#initialize(worksheet, values = [], options = {}) ⇒ Row
constructor
Creates a new row.
-
#style=(style) ⇒ Object
sets the style for every cell in this row.
-
#to_ary ⇒ Array
returns the cells in this row as an array This lets us transpose the rows into columns.
-
#to_xml_string(r_index, str = '') ⇒ String
Serializes the row.
Constructor Details
#initialize(worksheet, values = [], options = {}) ⇒ Row
Creates a new row. New Cell objects are created based on the values, types and style options. A new cell is created for each item in the values array. style and types options are applied as follows:
If the types option is defined and is a symbol it is applied to all the cells created.
If the types option is an array, cell types are applied by index for each cell
If the types option is not set, the cell will automatically determine its type.
If the style option is defined and is an Integer, it is applied to all cells created.
If the style option is an array, style is applied by index for each cell.
If the style option is not defined, the default style (0) is applied to each cell.
47 48 49 50 51 52 53 54 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 47 def initialize(worksheet, values=[], ={}) @height = nil self.worksheet = worksheet @cells = SimpleTypedList.new Cell @worksheet.rows << self self.height = .delete(:height) if [:height] array_to_cells(values, ) end |
Instance Attribute Details
#cells ⇒ SimpleTypedList (readonly)
The cells this row holds
14 15 16 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 14 def cells @cells end |
#height ⇒ Float
The height of this row in points, if set explicitly.
18 19 20 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 18 def height @height end |
#worksheet ⇒ Worksheet
The worksheet this row belongs to
10 11 12 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 10 def worksheet @worksheet end |
Instance Method Details
#add_cell(value = "", options = {}) ⇒ Cell
Adds a singel sell to the row based on the data provided and updates the worksheet’s autofit data.
80 81 82 83 84 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 80 def add_cell(value="", ={}) c = Cell.new(self, value, ) worksheet.send(:update_column_info, self.cells, self.cells.map(&:style)) c end |
#custom_height? ⇒ Boolean
true if the row height has been manually set
107 108 109 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 107 def custom_height? @height != nil end |
#index ⇒ Integer
The index of this row in the worksheet
58 59 60 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 58 def index worksheet.rows.index(self) end |
#style=(style) ⇒ Object
sets the style for every cell in this row
87 88 89 90 91 92 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 87 def style=(style) cells.each_with_index do | cell, index | s = style.is_a?(Array) ? style[index] : style cell.style = s end end |
#to_ary ⇒ Array
returns the cells in this row as an array This lets us transpose the rows into columns
97 98 99 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 97 def to_ary @cells.to_ary end |
#to_xml_string(r_index, str = '') ⇒ String
Serializes the row
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/axlsx/workbook/worksheet/row.rb', line 66 def to_xml_string(r_index, str = '') str << '<row r="' << (r_index + 1 ).to_s << '" ' if custom_height? str << 'customHeight="1" ht="' << height.to_s << '">' else str << '>' end @cells.each_with_index { |cell, c_index| cell.to_xml_string(r_index, c_index, str) } str << '</row>' str end |