Class: Spreadsheet::Row

Inherits:
Array
  • Object
show all
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

Excel::Row

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods included from Datatypes

append_features

Methods included from Compatibility

#ivar_name, #method_name

Constructor Details

- (Row) initialize(worksheet, idx, cells = [])

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

- (Object) formats (readonly)

Returns the value of attribute formats



51
52
53
# File 'lib/spreadsheet/row.rb', line 51

def formats
  @formats
end

- (Object) height

Returns the value of attribute height



52
53
54
# File 'lib/spreadsheet/row.rb', line 52

def height
  @height
end

- (Object) idx

Returns the value of attribute idx



52
53
54
# File 'lib/spreadsheet/row.rb', line 52

def idx
  @idx
end

- (Object) worksheet

Returns the value of attribute worksheet



52
53
54
# File 'lib/spreadsheet/row.rb', line 52

def worksheet
  @worksheet
end

Class Method Details

+ (Object) format_updater(*keys)



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

+ (Object) updater(*keys)



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

- (Object) default_format

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

- (Object) default_format=(format)

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

- (Object) first_used

#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

- (Object) format(idx)

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

- (Object) formatted

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

- (Object) formatted_size 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

- (Object) inspect



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

- (Object) set_format(idx, fmt)

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