2016-12-03 62 views
-1

我在Rails 4.2.7中使用Ruby 2.3 w。我有这个在我的Gemfile ...尝试解析Excel文件时获取“无效的文件格式”

gem 'creek' 

我试图解析了一个Excel(是“.xls”不“的.xlsx”)的文件,像这样

sheet = creek.sheets[0] 
sheet.rows.each do |row| 
    my_object_time = service.create_my_object_time_obj(row, race_id) 
    if my_object_time.valid? 
    results.push(my_object_time) 
    else 
    puts "#{my_object_time.errors.full_messages}" 
    end 

,但我得到的错误...

RuntimeError: Not a valid file format. 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/creek-1.1.2/lib/creek/book.rb:20:in `initialize' 
    from /Users/davea/Documents/workspace/myproject/app/services/xls_to_my_object_times_converter_service.rb:13:in `new' 
    from /Users/davea/Documents/workspace/myproject/app/services/xls_to_my_object_times_converter_service.rb:13:in `get_my_object_times' 
    from /Users/davea/Documents/workspace/myproject/app/services/xls_processor_service.rb:15:in `process_page_data' 
    from /Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:83:in `process_race_data' 
    from (irb):2 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:110:in `start' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:9:in `start' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:68:in `console' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands.rb:17:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>' 

上线“creek = Creek :: Book.new file_location”。是什么赋予了?我打算使用另一个gem来解析Excel文件,如果它可以解析一个表格并给我一个散列格式的单元格和值。

+0

您试图解析xls格式,但小溪只分析XLSX格式。 –

回答

0

那么,Not a valid file format是相当自我解释。

documentation告诉你的称号,它是大型的Excel(XLSX和XLSM)文件

流解析器。

我对spreadsheet宝石有很好的使用经验。

0

由于其他人可能最终在没有简单的解释说文件不是xlsx文件的同一点,我想我会补充说,“不是一个有效的文件格式”基于文件扩展名被抛出,并有选择忽略该延伸,像这样:

Creek::Book.new path, check_file_extension: false 

(例如,从小溪test_spec拍摄)