在模型中,在上传.xls
文件之前,我希望能够在应用程序保存excel文件之前对其进行验证。我正在尝试从:file_url
对象(comits表中将保存.xls
文件的列中)打开要保存的excel文件,然后验证它,但我得到{{1错误。
当我将已经由carrierwave上传并保存的excel文件的实际文件路径放入no implicit conversion of Symbol into String
但验证了我的验证目的时,验证工作正常。
如何在不将其存储在应用程序中的情况下获取excel文件?
我很感激帮助!我希望不要太困惑。
这是我Roo::Excel.new("")
comit.rb
答案 0 :(得分:0)
您将符号:file_url
传递给Roo::Excel.new
,它需要一个指向该文件的路径。尝试:
sheet = Roo::Excel.new(file_url)
答案 1 :(得分:0)
您可以将 tempfile 发送到 Roo
我们假设您要将文件作为params
发送到:file
:
Roo::Excel.open(params[:file].tempfile.to_path.to_s)
答案 2 :(得分:0)
好的,我明白了。而不是Roo::Excell
,它必须是
sheet = Roo::Spreadsheet.open(self.file_url)
另外,我需要安装gem 'roo-xls'
gem才能阅读电子表格。
答案 3 :(得分:0)
在我的情况下,以下代码工作正常。 (假设您已经安装了必需的gem)在我的情况下,我的根目录中有.xls文件
require 'roo'
require 'roo-xls'
class ExcelReader
def read_file()
sheet = Roo::Spreadsheet.open('Test.xls')
sheet.each do |row|
puts row
end
end
obj=ExcelReader.new()
obj.read_file()
end