Joe*_*ano 5 ruby parsing ruby-on-rails spreadsheet roo-gem
我正在尝试上传和解析.XLS文件。我已经尝试过roo-xls和Spreadsheet,但同时使用这两种方法,却遇到此错误:
Ole::Storage::FormatError in UploadController#upload
OLE2 signature is invalid
Run Code Online (Sandbox Code Playgroud)
我发现了一些有关此错误的资源,唯一的答案是将文档重新保存为.XLS,因为尽管原始文档被标记为.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 %>
Run Code Online (Sandbox Code Playgroud)
控制者
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
Run Code Online (Sandbox Code Playgroud)
问题是roo只读:
仅对于xls,您需要使用roo-xls gem。
如果您需要更多详细信息,我需要一份 Excel 文件的副本。
你应该有:
require 'roo'
require 'roo-xls'
Run Code Online (Sandbox Code Playgroud)
然后它就会起作用。
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |