使用Rails与Roo-xls gem

时间:2015-07-22 20:25:34

标签: ruby-on-rails ruby excel validation roo

在模型中,在上传.xls文件之前,我希望能够在应用程序保存excel文件之前对其进行验证。我正在尝试从:file_url对象(comits表中将保存.xls文件的列中)打开要保存的excel文件,然后验证它,但我得到{{1错误。

当我将已经由carrierwave上传并保存的excel文件的实际文件路径放入no implicit conversion of Symbol into String但验证了我的验证目的时,验证工作正常。

如何在不将其存储在应用程序中的情况下获取excel文件?

我很感激帮助!我希望不要太困惑。

这是我Roo::Excel.new("")

comit.rb

4 个答案:

答案 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