使用gem roo在ruby中解析xlsx文件

时间:2013-09-10 11:09:39

标签: ruby ruby-on-rails-3 ruby-on-rails-3.2

我的HTML代码,这里传递xslx文件进行解析,

<form method="post" action="/home/parse_xlsx" enctype="multipart/form-data">
   Upload XSLX File <input type="file" name="xlsx_file" id="xlsx_file"  />
   <input type="submit" value="Post"/>
</form>

我的控制器代码,

def parse_xlsx
    xlsxFile = params[:xlsx_file]
    prefix_tmp_path = xlsxFile.path
    filename = xlsxFile.original_filename
    fullname = File.join(prefix_tmp_path,filename) 

    require 'roo'
    s = Roo::Excelx.new(fullname)

    for i in 1..14
      puts s.cell(i,3) 
    end
end

给我错误,

file /tmp/RackMultipart20130910-10043-u4nqsc/CMS.xlsx does not exist

当我在控制台上运行以下代码时,将我的'CMS.xlsx'文件保存在rails根文件夹&amp;它运行没有任何错误。

require 'roo'
s = Roo::Excelx.new("CMS.xlsx")
for i in 1..14
  puts s.cell(i,3) 
end

请解释我出错的地方。

1 个答案:

答案 0 :(得分:0)

xlsxFile.path是文件的位置,您不必加入文件名。如果您需要保存文件,可以在将文件移动到文件位置时将其重命名为原始文件名

 s = Roo::Excelx.new(xlsxFile.path)