Class: POI::Area

Inherits:
Object
  • Object
show all
Defined in:
lib/poi/workbook/area.rb

Instance Method Summary collapse

Constructor Details

#initialize(reference) ⇒ Area

Returns a new instance of Area.



3
4
5
# File 'lib/poi/workbook/area.rb', line 3

def initialize reference
  @ref = reference
end

Instance Method Details

#in(workbook) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/poi/workbook/area.rb', line 7

def in workbook
  if single_cell_reference?
    ref = area.all_referenced_cells.first
    return [workbook.single_cell(ref)]
  end
  
  begin
    by_column = {}
    # refs = area.all_referenced_cells

    # slices = refs.enum_slice(refs.length/15)

    # slices.collect do |cell_refs|

    #   Thread.start do

    #     cell_refs.each do |cell_ref|

    #       first = workbook.worksheets[cell_ref.sheet_name].first_row

    #       last  = workbook.worksheets[cell_ref.sheet_name].last_row

    #       next unless cell_ref.row >= first && cell_ref.row <= last

    # 

    #       # ref = POI::CELL_REF.new(c.format_as_string)

    #       cell = workbook.single_cell cell_ref

    #       (by_column[cell_ref.cell_ref_parts.collect.last] ||= []) << cell

    #     end

    #   end

    # end.each {|t| t.join}


    area.all_referenced_cells.each do |cell_ref|
      first = workbook.worksheets[cell_ref.sheet_name].first_row
      last  = workbook.worksheets[cell_ref.sheet_name].last_row
      next unless cell_ref.row >= first && cell_ref.row <= last
    
      # ref = POI::CELL_REF.new(c.format_as_string)

      cell = workbook.single_cell cell_ref
      (by_column[cell_ref.cell_ref_parts.to_a.last] ||= []) << cell
    end
            
    by_column.each do |key, cells|
      by_column[key] = cells.compact
    end
    
    if by_column.length == 1
      by_column.values.flatten
    else
      by_column
    end
  rescue
    []
  end
end

#single_cell_reference?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/poi/workbook/area.rb', line 55

def single_cell_reference?
  area.single_cell? #@ref == getFirstCell.formatAsString rescue false

end