Class: Excelgrip::Range
Overview
Range Class ==============
Instance Method Summary
collapse
Methods inherited from GripWrapper
#initialize, #raw
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Excelgrip::GripWrapper
Instance Method Details
#==(other_range) ⇒ Object
333
334
335
336
337
338
339
340
|
# 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) ⇒ Object
295
296
297
|
# 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) ⇒ Object
shift = Excel::XlShiftToLeft or Excel::XlShiftUp
374
375
376
377
378
379
380
381
|
# File 'lib/excelgrip.rb', line 374
def delete(shift=nil)
if shift then
@raw_object.delete({'shift'=>shift})
else
@raw_object.delete end
@raw_object = nil
end
|
#each_range ⇒ Object
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
|
# 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)
else
merge_range_array.push target_cell.mergeArea
yield(target_cell.mergeArea.cells(1,1))
end
else
yield(target_cell)
end
}
}
end
|
#get_cursor ⇒ Object
Also known as:
get_cursol
387
388
389
|
# File 'lib/excelgrip.rb', line 387
def get_cursor()
RangeCursor.new(self)
end
|
#h_pos ⇒ Object
261
262
263
|
# File 'lib/excelgrip.rb', line 261
def h_pos()
@raw_object.column
end
|
#h_size ⇒ Object
273
274
275
|
# File 'lib/excelgrip.rb', line 273
def h_size
@raw_object.columns.count
end
|
#include?(inner_range) ⇒ Boolean
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
|
# 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) ⇒ Object
shift = Excel::XlShiftToRight or Excel::XlShiftDown
363
364
365
366
367
368
369
370
371
|
# 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 end
self
end
|
#inspect ⇒ Object
299
300
301
302
303
304
305
306
|
# 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 ⇒ Object
277
278
279
280
281
|
# File 'lib/excelgrip.rb', line 277
def merge()
orig_name = name()
@raw_object.Merge()
Range.new(@raw_object)
end
|
#mergearea ⇒ Object
289
290
291
|
# File 'lib/excelgrip.rb', line 289
def mergearea()
Range.new(@raw_object.MergeArea)
end
|
#name ⇒ Object
236
237
238
239
240
241
242
243
244
245
246
|
# File 'lib/excelgrip.rb', line 236
def name
book = parent.parent
name_list = book.names
name_list.each {|name_obj|
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) ⇒ Object
248
249
250
251
252
253
254
255
|
# File 'lib/excelgrip.rb', line 248
def name=(range_name)
sheet = parent
book = sheet.parent
a1_address = @raw_object.Address("ReferenceStyle"=>Excel::XlA1)
book.names.Add("Name"=>range_name, "RefersToLocal"=>"=#{sheet.name}!#{a1_address}")
end
|
#parent ⇒ Object
383
384
385
|
# File 'lib/excelgrip.rb', line 383
def parent
Worksheet.new(@raw_object.parent)
end
|
#position ⇒ Object
265
266
267
|
# File 'lib/excelgrip.rb', line 265
def position()
[@raw_object.row, @raw_object.column]
end
|
#unmerge ⇒ Object
283
284
285
286
287
|
# 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 ⇒ Object
257
258
259
|
# File 'lib/excelgrip.rb', line 257
def v_pos()
@raw_object.row
end
|
#v_size ⇒ Object
269
270
271
|
# File 'lib/excelgrip.rb', line 269
def v_size
@raw_object.rows.count
end
|
#value ⇒ Object
Also known as:
text
Return value of cell. If range contains multi cells, return Array of value.
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
# 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
|
#value=(text) ⇒ Object
Also known as:
text=
223
224
225
226
227
228
229
230
231
232
233
|
# 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
|