class RubyXL::Reference

def initialize(*params)

RubyXL::Reference.new(reference_string)
RubyXL::Reference.new(row_from, row_to, col_from, col_to)
RubyXL::Reference.new(row, col)
def initialize(*params)
  row_from = row_to = col_from = col_to = nil
  case params.size
  when 4 then row_from, row_to, col_from, col_to = params
  when 2 then row_from, col_from = params
  when 1 then
    raise ArgumentError.new("invalid value for #{self.class}: #{params[0].inspect}") unless params[0].is_a?(String)
    from, to = params[0].split(':')
    row_from, col_from = self.class.ref2ind(from)
    row_to, col_to = self.class.ref2ind(to) unless to.nil?
  end
  @row_range = Range.new(row_from || 0, row_to || row_from || ROW_MAX)
  @col_range = Range.new(col_from || 0, col_to || col_from || COL_MAX)
end