2016-12-08 5 views
1

私はRailsの4.2.7を使用して、私は「.XLS」文書を再保存するオプションがない場合、「Ole :: Storage :: FormatError:OLE2署名が無効です」というエラーをどのように克服できますか?

book = Spreadsheet.open file_location 

で終わるファイルに対してこの呼び出しを実行したときだけ、

gem 'spreadsheet' 

悲しいことに、私のGemfileにスプレッドシートの宝石を追加しています私は以下のエラーを受け取ります。残念ながら、この文書を別のExcel形式で保存することはできません(私のコンピュータにはExcelがインストールされていない)。このxlsファイルを解析するにはどうすればよいですか?それが問題を解決すれば私は別の宝石を使うことに門戸を開いている。

Ole::Storage::FormatError: OLE2 signature is invalid 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:378:in `validate!' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:370:in `initialize' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:112:in `new' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:112:in `load' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:79:in `initialize' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:85:in `new' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:85:in `open' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/spreadsheet-1.1.4/lib/spreadsheet/excel/reader.rb:1282:in `setup' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/spreadsheet-1.1.4/lib/spreadsheet/excel/reader.rb:140:in `read' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/spreadsheet-1.1.4/lib/spreadsheet/excel/workbook.rb:32:in `open' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/spreadsheet-1.1.4/lib/spreadsheet.rb:67:in `open' 
    from /Users/davea/.rvm/gems/ruby-2.3.0/gems/spreadsheet-1.1.4/lib/spreadsheet.rb:73:in `open' 
    from /Users/davea/Documents/workspace/myproject/app/services/xls_to_my_object_times_converter_service.rb:12: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:82:in `process_my_object_data' 
    from (irb):3 
    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' 

答えて

0

私は試したときにスプレッドシートにいくつか問題がありました。それはしばらく前のことだったので、私は何が起こったのか正確には思い出さないが、それは似たようなOLEエラーだと思う。それ以来更新されています。しかし、あなたは別の宝石を考えていると言いましたので、私はrooに切り替えました。 1つの非常に大きなメリットは、Excelと互換性があるだけでなく、さまざまなフォーマットに対応できることです。

+0

'xls'の場合、https://github.com/roo-rb/roo-xlsが必要です –

+0

これは、ドキュメントで指定されている従来のファイルに当てはまります。 "roo-xls gem(xls、xml)を使用する場合のExcel 97、Excel 2002 XML、およびExcel 2003のXML形式"を参照してください。また、「roo-googleを使用すると読み書き可能なGoogleスプレッドシート」 –

+0

Kだから、答えのリンクは私が見たエラーを解決するものではなく、代わりにroo-xlsを使うべきでしょうか? – Dave

関連する問題