.XLS ファイルをアップロードして解析しようとしています。私はroo-xlsとSpreadsheetを試しましたが、両方でこのエラーが発生しています:
Ole::Storage::FormatError in UploadController#upload
OLE2 signature is invalid
このエラーに関するリソースをいくつか見つけましたが、唯一の答えは、ドキュメントを .XLS として再保存することです。
残念ながら、ユーザーがファイルをアップロードしているため、これは実際にはオプションではありません。そのため、再保存を必要とせずに機能することが重要です。
記録のために、ファイルを再保存しようとしましたが、現在は機能していますが、再保存の前後のファイルの形式がまったく同じに見えるため、なぜ機能するのか途方に暮れています。これは、Excelの「ファイルの種類」の下にリストされていたもので、前後に次のとおりです。
Microsoft Excel 97-2003 ワークシート (.xls)"
そして、これはLibreofficeの「タイプ」の下にリストされているもので、前後に次のとおりです。
Microsoft Excel ワークシート (application/vnd.ms-excel)
どうしたの?
また、ここに私の簡単なアップロードコードがあります:
形
<%= form_tag(upload_path, multipart: true) do %>
<%= file_field_tag :file %>
<% end %>
コントローラ
file = params[:file].path
#Roo Attempt
doc = Roo::Excel.new(file)
#Spreadsheet Attempt
require 'spreadsheet'
Spreadsheet.client_encoding = 'UTF-8'
doc = Spreadsheet.open(file).worksheets