Class: Axlsx::Worksheet
- Inherits:
-
Object
- Object
- Axlsx::Worksheet
- Defined in:
- lib/axlsx/workbook/worksheet/worksheet.rb
Overview
The Worksheet class represents a worksheet in the workbook.
Instance Attribute Summary (collapse)
-
- (Array) auto_fit_data
readonly
An array of content based calculated column widths.
-
- (String) name
The name of the worksheet.
-
- (SimpleTypedList) rows
readonly
The rows in this worksheet.
-
- (Workbook) workbook
The workbook that owns this worksheet.
Instance Method Summary (collapse)
-
- (Object) add_chart(chart_type, options = {}) {|chart| ... }
Adds a chart to this worksheets drawing.
-
- (Object) add_image(options = {}) {|image| ... }
Adds a media item to the worksheets drawing.
-
- (Row) add_row(values = [], options = {}) {|@rows.last| ... }
Adds a row to the worksheet and updates auto fit data.
-
- (Object) col_style(index, style, options = {})
Set the style for cells in a specific column.
-
- (Object) cols
returns the sheet data as columnw.
-
- (Drawing) drawing
The drawing associated with this worksheet.
-
- (Integer) index
The index of this worksheet in the owning Workbook's worksheets list.
-
- (Worksheet) initialize(wb, options = {})
constructor
Creates a new worksheet.
-
- (String) pn
The part name of this worksheet.
-
- (Relationships) relationships
The worksheet relationships.
-
- (String) rels_pn
The relationship part name of this worksheet.
-
- (String) rId
The relationship Id of thiw worksheet.
-
- (Object) row_style(index, style, options = {})
Set the style for cells in a specific row.
-
- (String) to_xml
Serializes the worksheet document.
Constructor Details
- (Worksheet) initialize(wb, options = {})
the recommended way to manage worksheets is Workbook#add_worksheet
Creates a new worksheet.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 34 def initialize(wb, ={}) @drawing = nil @rows = SimpleTypedList.new Row self.workbook = wb @workbook.worksheets << self @auto_fit_data = [] self.name = [:name] || "Sheet" + (index+1).to_s @magick_draw = Magick::Draw.new @cols = SimpleTypedList.new Cell end |
Instance Attribute Details
- (Array) auto_fit_data (readonly)
a single auto fit data item is a hash with :longest => [String] and :sz=> [Integer] members.
An array of content based calculated column widths.
25 26 27 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 25 def auto_fit_data @auto_fit_data end |
- (String) name
The name of the worksheet
9 10 11 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 9 def name @name end |
- (SimpleTypedList) rows (readonly)
The recommended way to manage rows is Worksheet#add_row
The rows in this worksheet
20 21 22 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 20 def rows @rows end |
- (Workbook) workbook
The workbook that owns this worksheet
13 14 15 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 13 def workbook @workbook end |
Instance Method Details
- (Object) add_chart(chart_type, options = {}) {|chart| ... }
each chart type also specifies additional options
Adds a chart to this worksheets drawing. This is the recommended way to create charts for your worksheet. This method wraps the complexity of dealing with ooxml drawing, anchors, markers graphic frames chart objects and all the other dirty details.
148 149 150 151 152 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 148 def add_chart(chart_type, ={}) chart = drawing.add_chart(chart_type, ) yield chart if block_given? chart end |
- (Object) add_image(options = {}) {|image| ... }
Adds a media item to the worksheets drawing
157 158 159 160 161 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 157 def add_image(={}) image = drawing.add_image() yield image if block_given? image end |
- (Row) add_row(values = [], options = {}) {|@rows.last| ... }
Adds a row to the worksheet and updates auto fit data
86 87 88 89 90 91 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 86 def add_row(values=[], ={}) Row.new(self, values, ) update_auto_fit_data @rows.last.cells yield @rows.last if block_given? @rows.last end |
- (Object) col_style(index, style, options = {})
You can also specify the style for specific columns in the call to add_row by using an array for the :styles option
Set the style for cells in a specific column
123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 123 def col_style(index, style, ={}) offset = .delete(:row_offset) || 0 @rows[(offset..-1)].each do |r| cells = r.cells[index] if cells.is_a?(Array) cells.each { |c| c.style = style } else cells.style = style end end end |
- (Object) cols
returns the sheet data as columnw
111 112 113 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 111 def cols @rows.transpose end |
- (Drawing) drawing
the recommended way to work with drawings and charts is Worksheet#add_chart
The drawing associated with this worksheet.
77 78 79 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 77 def drawing @drawing || @drawing = Axlsx::Drawing.new(self) end |
- (Integer) index
The index of this worksheet in the owning Workbook's worksheets list.
69 70 71 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 69 def index @workbook.worksheets.index(self) end |
- (String) pn
The part name of this worksheet
51 52 53 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 51 def pn "#{WORKSHEET_PN % (index+1)}" end |
- (Relationships) relationships
The worksheet relationships. This is managed automatically by the worksheet
189 190 191 192 193 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 189 def relationships r = Relationships.new r << Relationship.new(DRAWING_R, "../#{@drawing.pn}") if @drawing r end |
- (String) rels_pn
The relationship part name of this worksheet
57 58 59 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 57 def rels_pn "#{WORKSHEET_RELS_PN % (index+1)}" end |
- (String) rId
The relationship Id of thiw worksheet
63 64 65 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 63 def rId "rId#{index+1}" end |
- (Object) row_style(index, style, options = {})
You can also specify the style in the add_row call
Set the style for cells in a specific row
100 101 102 103 104 105 106 107 108 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 100 def row_style(index, style, ={}) offset = .delete(:col_offset) || 0 rs = @rows[index] if rs.is_a?(Array) rs.each { |r| r.cells[(offset..-1)].each { |c| c.style = style } } else rs.cells[(offset..-1)].each { |c| c.style = style } end end |
- (String) to_xml
Serializes the worksheet document
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/axlsx/workbook/worksheet/worksheet.rb', line 165 def to_xml builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml| xml.worksheet(:xmlns => XML_NS, :xmlns:r' => XML_NS_R) { if @auto_fit_data.size > 0 xml.cols { @auto_fit_data.each_with_index do |col, index| min_max = index+1 xml.col(:min=>min_max, :max=>min_max, :width => auto_width(col), :customWidth=>"true") end } end xml.sheetData { @rows.each do |row| row.to_xml(xml) end } xml.drawing :r:id"=>"rId1" if @drawing } end builder.to_xml end |