2016-12-08 19 views
1

Я использую Rails 4.2.7 и только что добавили в табличной камень в мой GemfileКак преодолеть ошибку «Ole :: Storage :: FormatError: OLE2 подписи недопустима» при повторном сохранении документа не является опцией?

gem 'spreadsheet' 

К сожалению, когда я выполняю этот вызов против файла, который заканчивается в «.xls»

book = Spreadsheet.open file_location 

Я получаю следующую ошибку. К сожалению, это не вариант для сохранения этого документа в другом формате 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, и это сработало для меня хорошо. Одно очень сильное преимущество заключается в том, что он может обрабатывать множество различных форматов, а не только совместимый с Excel.

+0

Для 'xls' вам нужно https://github.com/roo-rb/roo-xls –

+0

Это верно для устаревших файлов, как указано в документации. «Форматы Excel 97, Excel 2002 XML и Excel 2003 при использовании жемчужины roo-xls (xls, xml)». Кроме того, «электронные таблицы Google с доступом для чтения/записи при использовании roo-google» –

+0

K, поэтому ссылка в вашем ответе НЕ является тем, что будет касаться ошибки, которую я видел, и вместо этого я должен использовать roo-xls? – Dave