Roo spreadsheet uploading OLE2 signature is invalid

对着背影说爱祢 提交于 2019-12-08 17:07:35

问题


Right so I've checked out Roo. Great gem and all and have a really basic application that doesn't have no models. And basic controller, class and view and I can't seem to get a spreadsheet to upload as I am getting OLE2 signature is invalid error. I have the following basic setup

Controller

class SpreadsheetServiceController < ApplicationController

  def new
  end

  def create    
    parser = SpreadsheetTagService.new(params[:spreadsheet][:file])

    respond_to do |format|
      format.all {render :json => 'Done'}
    end
  end
end 

SpreadsheetTagService

 class SpreadsheetTagService 
  include Roo

  def initialize(uploaded_file)
    @tmp_destination = "#{Rails.root}/tmp/tag-import.xls"
    @file_path = save_file_to_tmp(uploaded_file)
    @file = File.new(@file_path)
    read_file(@file)
  end 

  private 
    def save_file_to_tmp(uploaded_file)
      FileUtils.mv(uploaded_file.tempfile.path, @tmp_destination )
      @tmp_destination
    end

    def read_file(file)
      @spreadsheet = open_spreadsheet(file)
      @spreadsheet.each_with_pagename do |name,sheet|    
        Rails.logger.debug( sheet )
      end    
    end

    def open_spreadsheet(file)
      case File.extname(file.path)
        when ".csv" then Csv.new(file.path, nil, :ignore)
        when ".xls" then Excel.new(file.path, nil, :ignore)
        when ".xlsx" then Excelx.new(file.path, nil, :ignore)
        else raise "Unknown file type: #{file.original_filename}"
      end
    end

end  

View

<%= form_tag spreadsheetupload_url, multipart: true do %>
  <%= file_field_tag :file %>
  <%= submit_tag "Import" %>
<% end %>

回答1:


Instead of .xls format use .xlsx format.then it will work.

For me it's working.




回答2:


This article was quite useful:

http://atomicules.co.uk/2009/07/17/roo-and-ole2-signature-is-invalid.html

FullText:

If you get an "Ole::Storage::FormatError: OLE2 signature is invalid" error when reading an Excel spreadsheet using Roo it can probably be solved by resaving the spreadsheet (unfortunately using Excel) and making sure it is saving it as "Microsoft Office Excel Workbook (*.xls)", etc and not something odd.

I had two spreadsheets that had the .xls extension, but seems they were masquerading; when doing a Save As on them one was actually in a "Text (tab delimited)" format and the other in a "Web Page" HTML format. These were system generated files, so I guess that explains their odd form.



来源:https://stackoverflow.com/questions/17990116/roo-spreadsheet-uploading-ole2-signature-is-invalid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!