2016-12-08 1 views
1

나는 레일 4.2.7를 사용하고 내가 ".XLS"문서를 다시 저장하면 옵션을 사용할 수 없을 때 "Ole :: Storage :: FormatError : OLE2 signature is invalid"오류를 어떻게 극복합니까?

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으로 전환했고 그것은 나에게 아주 잘 돌아갔다. 하나의 매우 큰 장점은 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

관련 문제