![](/img/trans.png)
[英]Getting -nil- values for ActiveRecord attributes in Rails database when parsing spreadsheet using roo-gem
[英]Parsing XLS Spreadsheet in Rails using Roo Gem
我正在嘗試使用roo gem解析XLS文件,而不使用文件上傳插件。 不幸的是,我無法訪問文件的數據。
我得到錯誤:
#<File:0x007ffac2282250> is not an Excel file
因此,roo無法將文件識別為Excel文件。 我是否需要將文件保存在本地才能使用roo,還是可以解決呢? 我想將excel文件的數據直接解析到數據庫中。
通過的參數:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"yLqOpSK981tDNYjKSoWBh0VnFEKSk0XA/wOt3r+yWJc=", "uploadform"=>{"name"=>"xls", "file"=>#<ActionDispatch::Http::UploadedFile:0x007ffac22b6550 @original_filename="cities2.xls", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"uploadform[file]\"; filename=\"cities2.xls\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/var/folders/qn/70msrkt90pd390sdr14_0g2m0000gn/T/RackMultipart20120306-3729-1m2xcsp>>}, "commit"=>"Save Uploadform"}
我正在嘗試訪問文件
if params[:uploadform][:file].original_filename =~ /.*\.xls$/i
oo = Excel.new(params[:uploadform][:file].open)
rooparse(oo)
end
我也嘗試過params [:uploadform] [:file] .read和params [:uploadform] [:file],但我認為.open是這里的正確方法!
您是否建議在這里使用回形針或載波?
謝謝您的幫助!
是的,我還無法解析完整文件,但這是另一個問題。 至少我將表中的第一行添加到數據庫中,並包含以下幾行:
require 'fileutils'
require 'iconv'
tmp = params[:uploadform][:file].tempfile
file = File.join("public", params[:uploadform][:file].original_filename)
FileUtils.cp tmp.path, file
oo = Excel.new(file)
rooparse(oo)
FileUtils.rm file
感謝您的輸入!
這是路徑:
params[:file].tempfile.path.
您可以嘗試以下方法:
Excel.new(params[:uploadform][:file].tempfile.path)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.