Class: Squib::Import::XlsxImporter

Inherits:
Object
  • Object
show all
Includes:
QuantityExploder
Defined in:
lib/squib/import/xlsx_importer.rb

Instance Method Summary collapse

Methods included from QuantityExploder

#explode_quantities

Instance Method Details

#import_to_dataframe(import, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/squib/import/xlsx_importer.rb', line 7

def import_to_dataframe(import, &block)
  s = Roo::Excelx.new(import.file)
  s.default_sheet = s.sheets[import.sheet]
  data = Squib::DataFrame.new
  s.first_column.upto(s.last_column) do |col|
    header = s.cell(s.first_row, col).to_s
    header = header.strip if import.strip?
    data[header] = []
    (s.first_row + 1).upto(s.last_row) do |row|
      cell = s.cell(row, col)
      # Roo hack for avoiding unnecessary .0's on whole integers (https://github.com/roo-rb/roo/issues/139)
      cell = s.excelx_value(row, col) if s.excelx_type(row, col) == [:numeric_or_formula, 'General']
      cell = cell.strip if cell.respond_to?(:strip) && import.strip?
      cell = block.yield(header, cell) unless block.nil?
      data[header] << cell
    end# row
  end# col
  explode_quantities(data, import.explode)
end