class Excelgrip::Range
¶ ↑
Range
Class ==============¶ ↑
¶ ↑
Public Instance Methods
==(other_range)
click to toggle source
# File lib/excelgrip.rb, line 333 def ==(other_range) return false unless other_range.methods.include?("position") if (position() == other_range.position()) and (h_size() == other_range.h_size) and (v_size() == other_range.v_size) return true end return false end
cells(v_pos, h_pos)
click to toggle source
# File lib/excelgrip.rb, line 295 def cells(v_pos, h_pos) Range.new(@raw_object.cells(v_pos, h_pos)) end
delete(shift=nil)
click to toggle source
shift = Excel::XlShiftToLeft or Excel::XlShiftUp
# File lib/excelgrip.rb, line 374 def delete(shift=nil) if shift then @raw_object.delete({'shift'=>shift}) else @raw_object.delete # Auto Shift end @raw_object = nil end
each_range() { |mergecells| ... }
click to toggle source
# File lib/excelgrip.rb, line 308 def each_range() my_h_size = h_size() my_v_size = v_size() merge_range_array = [] my_v_size.times {|v_offset| my_h_size.times {|h_offset| target_cell = Range.new(@raw_object.cells(v_offset+1, h_offset+1)) if target_cell.MergeCells if operation_finished?(merge_range_array,target_cell) # skip else merge_range_array.push target_cell.mergeArea yield(target_cell.mergeArea.cells(1,1)) end else yield(target_cell) end } } end
get_cursor()
click to toggle source
# File lib/excelgrip.rb, line 387 def get_cursor() RangeCursor.new(self) end
Also aliased as: get_cursol
h_pos()
click to toggle source
# File lib/excelgrip.rb, line 261 def h_pos() @raw_object.column end
h_size()
click to toggle source
# File lib/excelgrip.rb, line 273 def h_size @raw_object.columns.count end
include?(inner_range)
click to toggle source
# File lib/excelgrip.rb, line 342 def include?(inner_range) my_v_pos, my_h_pos = position() my_v_size = v_size() my_h_size = h_size() my_h_range = my_h_pos..(my_h_pos+my_h_size-1) my_v_range = my_v_pos..(my_v_pos+my_v_size-1) inner_v_pos, inner_h_pos = inner_range.position() inner_v_size = inner_range.v_size() inner_h_size = inner_range.h_size() if ( my_h_range.include?(inner_h_pos) and my_h_range.include?(inner_h_pos+inner_h_size-1) and my_v_range.include?(inner_v_pos) and my_v_range.include?(inner_v_pos+inner_v_size-1)) return true else return false end end
insert_here(shift=nil)
click to toggle source
shift = Excel::XlShiftToRight or Excel::XlShiftDown
# File lib/excelgrip.rb, line 363 def insert_here(shift=nil) @raw_object.copy if shift then @raw_object.insert({'shift'=>shift}) else @raw_object.insert # Auto Shift end self end
inspect()
click to toggle source
# File lib/excelgrip.rb, line 299 def inspect() return self.class unless @raw_object if (v_size > 1) or (h_size > 1) "Range:((V:#{v_pos},H:#{h_pos})-(V:#{v_pos+v_size-1},H:#{h_pos+h_size-1}))" else "Range:(V:#{v_pos},H:#{h_pos})" end end
merge()
click to toggle source
# File lib/excelgrip.rb, line 277 def merge() orig_name = name() @raw_object.Merge() Range.new(@raw_object) end
mergearea()
click to toggle source
# File lib/excelgrip.rb, line 289 def mergearea() Range.new(@raw_object.MergeArea) end
name()
click to toggle source
# File lib/excelgrip.rb, line 236 def name book = parent.parent name_list = book.names name_list.each {|name_obj| # puts "*** name_obj.name = #{name_obj.name}" if Range.new(name_obj.RefersToRange) == self return name_obj.name end } @raw_object.Address("RowAbsolute"=>false, "ColumnAbsolute"=>false, "ReferenceStyle"=>Excel::XlA1) end
name=(range_name)
click to toggle source
# File lib/excelgrip.rb, line 248 def name=(range_name) sheet = parent book = sheet.parent a1_address = @raw_object.Address("ReferenceStyle"=>Excel::XlA1) # puts "*** Range.name=#{range_name}, address=#{a1_address}" book.names.Add("Name"=>range_name, "RefersToLocal"=>"=#{sheet.name}!#{a1_address}") end
parent()
click to toggle source
# File lib/excelgrip.rb, line 383 def parent Worksheet.new(@raw_object.parent) end
position()
click to toggle source
# File lib/excelgrip.rb, line 265 def position() [@raw_object.row, @raw_object.column] end
unmerge()
click to toggle source
# File lib/excelgrip.rb, line 283 def unmerge() top_cell = @raw_object.cells(1,1) @raw_object.UnMerge() Range.new(top_cell) end
v_pos()
click to toggle source
# File lib/excelgrip.rb, line 257 def v_pos() @raw_object.row end
v_size()
click to toggle source
# File lib/excelgrip.rb, line 269 def v_size @raw_object.rows.count end
value()
click to toggle source
Return value of cell. If range contains multi cells, return Array of value.
# File lib/excelgrip.rb, line 205 def value if (h_size() == 1) and (v_size() == 1) return @raw_object.value end return_arr = [] self.each_range {|inner_range| return_arr.push inner_range.raw.value } if return_arr.size == 1 return return_arr[0] else return return_arr end end
Also aliased as: text
value=(text)
click to toggle source
# File lib/excelgrip.rb, line 223 def value=(text) if text.class == Array text_arr = text.dup else text_arr = [text] end self.each_range {|inner_range| inner_range.raw.value = text_arr.shift } end
Also aliased as: text=
Private Instance Methods
operation_finished?(merge_range_array,target_cell)
click to toggle source
# File lib/excelgrip.rb, line 393 def operation_finished?(merge_range_array,target_cell) merge_range_array.each {|merge_range| if merge_range.include?(target_cell) return true end } return false end