Class: Dbtools::Converter::Excel2csv_converter

Inherits:
Object
  • Object
show all
Defined in:
lib/dbtools/converter/excel2csv_converter.rb

Instance Method Summary collapse

Constructor Details

#initialize(filename) ⇒ Excel2csv_converter

Initialize the roo excel library.



10
11
12
13
# File 'lib/dbtools/converter/excel2csv_converter.rb', line 10

def initialize(filename)
  @excel = Roo::Spreadsheet.open(filename)
  @excel_filename = File.basename(filename)
end

Instance Method Details

#output(folder) ⇒ Object

Output all sheets in the excel to csv. Set the sheetname as the filename.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/dbtools/converter/excel2csv_converter.rb', line 16

def output(folder)
  FileUtils.mkdir_p(folder)
  h = Hash.new
  @excel.each_with_pagename do |sheetname, sheet|
    filename = @excel_filename.gsub(/[^0-9a-zA-Z_-]/,'_') + "_" + sheetname.gsub(/[^0-9a-zA-Z_-]/,'_') + ".csv"
    path = File.join(folder, filename)
    output = File.open(path, "w") do |f|
      f.write(sheet.to_csv)
    end
    h[sheetname] = path
  end
  @excel.close
  return h
end

#sheet2csv(sheet_index) ⇒ Object

Convert an excel sheet to csv, given the index.



32
33
34
35
36
37
38
# File 'lib/dbtools/converter/excel2csv_converter.rb', line 32

def sheet2csv(sheet_index)
  begin
    @excel.sheet(sheet_index).to_csv
  rescue ArgumentError => e
    puts e.message
  end
end