Class: Spreadsheet::Row
- Inherits:
-
Array
- Object
- Array
- Spreadsheet::Row
- Includes:
- Datatypes
- Defined in:
- lib/spreadsheet/row.rb
Overview
The Row class. Encapsulates Cell data and formatting. Since Row is a subclass of Array, you may use all the standard Array methods to manipulate a Row. By convention, Row#at will give you raw values, while Row#[] may be overridden to return enriched data if necessary (see also the Date- and DateTime-handling in Excel::Row#[]
Useful Attributes are:
- #idx
-
The 0-based index of this Row in its Worksheet.
- #formats
-
A parallel array containing Formatting information for all cells stored in a Row.
- #default_format
-
The default Format used when writing a Cell if no explicit Format is stored in #formats for the cell.
- #height
-
The height of this Row in points (defaults to 12).
Direct Known Subclasses
Instance Attribute Summary collapse
-
#formats ⇒ Object
readonly
Returns the value of attribute formats.
-
#height ⇒ Object
Returns the value of attribute height.
-
#idx ⇒ Object
Returns the value of attribute idx.
-
#worksheet ⇒ Object
Returns the value of attribute worksheet.
Class Method Summary collapse
Instance Method Summary collapse
-
#default_format ⇒ Object
The default Format of this Row, if you have set one.
-
#default_format=(format) ⇒ Object
Set the default Format used when writing a Cell if no explicit Format is stored for the cell.
-
#first_used ⇒ Object
#first_used the 0-based index of the first non-blank Cell.
-
#format(idx) ⇒ Object
The Format for the Cell at idx (0-based), or the first valid Format in Row#default_format, Column#default_format and Worksheet#default_format.
-
#formatted ⇒ Object
Returns a copy of self with nil-values appended for empty cells that have an associated Format.
-
#formatted_size ⇒ Object
(also: #first_unused)
Same as Row#size, but takes into account formatted empty cells.
-
#initialize(worksheet, idx, cells = []) ⇒ Row
constructor
A new instance of Row.
- #inspect ⇒ Object
-
#set_format(idx, fmt) ⇒ Object
Set the Format for the Cell at idx (0-based).
- #update_format(idx, opts = {}) ⇒ Object
Methods included from Datatypes
Methods included from Compatibility
Constructor Details
#initialize(worksheet, idx, cells = []) ⇒ Row
Returns a new instance of Row.
59 60 61 62 63 64 65 66 |
# File 'lib/spreadsheet/row.rb', line 59 def initialize worksheet, idx, cells=[] @default_format = nil @worksheet = worksheet @idx = idx super cells @formats = [] @height = 12.1 end |
Instance Attribute Details
#formats ⇒ Object (readonly)
Returns the value of attribute formats.
51 52 53 |
# File 'lib/spreadsheet/row.rb', line 51 def formats @formats end |
#height ⇒ Object
Returns the value of attribute height.
52 53 54 |
# File 'lib/spreadsheet/row.rb', line 52 def height @height end |
#idx ⇒ Object
Returns the value of attribute idx.
52 53 54 |
# File 'lib/spreadsheet/row.rb', line 52 def idx @idx end |
#worksheet ⇒ Object
Returns the value of attribute worksheet.
52 53 54 |
# File 'lib/spreadsheet/row.rb', line 52 def worksheet @worksheet end |
Class Method Details
.format_updater(*keys) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/spreadsheet/row.rb', line 22 def format_updater *keys keys.each do |key| unless instance_methods.include? "unupdated_#{key}=" alias_method :"unupdated_#{key}=", :"#{key}=" define_method "#{key}=" do |value| send "unupdated_#{key}=", value @worksheet.row_updated @idx, self if @worksheet value end end end end |
.updater(*keys) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/spreadsheet/row.rb', line 34 def updater *keys keys.each do |key| ## Passing blocks to methods defined with define_method is not possible # in Ruby 1.8: # http://groups.google.com/group/ruby-talk-google/msg/778184912b769e5f # use class_eval as suggested by someone else in # http://rubyforge.org/tracker/index.php?func=detail&aid=25732&group_id=678&atid=2677 class_eval <<-SRC, __FILE__, __LINE__ def #{key}(*args) res = super(*args) @worksheet.row_updated @idx, self if @worksheet res end SRC end end |
Instance Method Details
#default_format ⇒ Object
The default Format of this Row, if you have set one. Returns the Worksheet’s default or the Workbook’s default Format otherwise.
70 71 72 |
# File 'lib/spreadsheet/row.rb', line 70 def default_format @default_format || @worksheet.default_format || @workbook.default_format end |
#default_format=(format) ⇒ Object
Set the default Format used when writing a Cell if no explicit Format is stored for the cell.
76 77 78 79 |
# File 'lib/spreadsheet/row.rb', line 76 def default_format= format @worksheet.add_format format if @worksheet @default_format = format end |
#first_used ⇒ Object
#first_used the 0-based index of the first non-blank Cell.
83 84 85 |
# File 'lib/spreadsheet/row.rb', line 83 def first_used [ index_of_first(self), index_of_first(@formats) ].compact.min end |
#format(idx) ⇒ Object
The Format for the Cell at idx (0-based), or the first valid Format in Row#default_format, Column#default_format and Worksheet#default_format.
89 90 91 92 |
# File 'lib/spreadsheet/row.rb', line 89 def format idx @formats[idx] || @default_format \ || @worksheet.column(idx).default_format if @worksheet end |
#formatted ⇒ Object
Returns a copy of self with nil-values appended for empty cells that have an associated Format. This is primarily a helper-function for the writer classes.
97 98 99 100 101 102 103 104 |
# File 'lib/spreadsheet/row.rb', line 97 def formatted copy = dup Helpers.rcompact(@formats) if copy.length < @formats.size copy.concat Array.new(@formats.size - copy.length) end copy end |
#formatted_size ⇒ Object Also known as: first_unused
Same as Row#size, but takes into account formatted empty cells
107 108 109 110 111 112 |
# File 'lib/spreadsheet/row.rb', line 107 def formatted_size Helpers.rcompact(@formats) sz = size fs = @formats.size fs > sz ? fs : sz end |
#inspect ⇒ Object
117 118 119 120 121 122 |
# File 'lib/spreadsheet/row.rb', line 117 def inspect variables = instance_variables.collect do |name| "%s=%s" % [name, instance_variable_get(name)] end.join(' ') sprintf "#<%s:0x%014x %s %s>", self.class, object_id, variables, super end |
#set_format(idx, fmt) ⇒ Object
Set the Format for the Cell at idx (0-based).
125 126 127 128 129 130 |
# File 'lib/spreadsheet/row.rb', line 125 def set_format idx, fmt @formats[idx] = fmt @worksheet.add_format fmt @worksheet.row_updated @idx, self if @worksheet fmt end |
#update_format(idx, opts = {}) ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/spreadsheet/row.rb', line 132 def update_format(idx, opts = {}) if @formats[idx] @formats[idx].update_format(opts) else fmt = default_format.clone fmt.font = fmt.font.clone @formats[idx] = fmt.update_format(opts) end @worksheet.add_format @formats[idx] @worksheet.row_updated @idx, self if @worksheet end |