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