class SheetData

Public Class Methods

workbook(file) click to toggle source
# File lib/sheetdata.rb, line 48
def self::workbook(file)
  @@file = file
  if !@@workbook
    begin
      magic, mime = file_type
      @@workbook = case mime
                   when ODS_MIME 
                     if magic.match ODS_Magic
                       @@log.debug('ODS')
                       Roo::Spreadsheet::open(@@file, extension: :ods ) 
                     end
                   when XLS_MIME 
                     if magic.match XLS_Magic
                       @@log.debug('XLS')
                       Roo::Spreadsheet::open(@@file, extension: :xls ) 
                     end
                   when XLSX_MIME 
                     if magic.match XLSX_Magic
                       @@log.debug('XLSX')
                       Roo::Spreadsheet::open(@@file, extension: :xlsx ) 
                     end
                   when CSV_MIME
                     raise IOError.new('CSV is not yet supported, sorry')
                   else
                     raise IOError.new('Mime-Type is ' << mime << ' and Magic sais: ' << magic << ". Is this supposed to be a spreadsheet?")
                   end
    rescue Exception => ex
      msg = 'ERROR! File %s is not supported: %s' %[@@file, ex.message]  
      puts msg
      @log.error yellow(msg)
      exit false
    end                       

    return @@workbook
  end
end

Private Class Methods

file_type() click to toggle source

derive the mime-type from the file

# File lib/sheetdata.rb, line 87
def self::file_type
  fm = FileMagic.fm
  file_magic = fm.file(@@file)
  fm.flags = [:mime_type]
  file_mime = fm.file(@@file) 
  @log.debug('File type is ' << file_magic << ', Mime-type is ' << file_mime)
  return file_magic, file_mime
end