尝试解析 Excel 文件时获取 "Not a valid file format"

Getting "Not a valid file format" when trying to parse an Excel file

我正在使用 Ruby 2.3 w 和 Rails 4.2.7。我的 GEmfile 中有这个……

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 文件,如果它可以解析 sheet 并以哈希格式给我单元格和值。

好吧,Not a valid file format 不言自明。

Creek documentation 在标题中告诉你这是一个

Stream parser for large Excel(xlsx and xlsm) files.

我对 spreadsheet gem 有很好的体验。

由于其他人可能会在没有简单解释该文件不是 xlsx 文件的情况下以相同的方式结束,我想我会补充说 "Not a valid file format" 是根据文件扩展名抛出的,并且有一个忽略所述扩展的选项,如下所示:

Creek::Book.new path, check_file_extension: false

(取自小溪的示例 test_spec)