如何将数据从模型导出到rubyonrails上的excel文件

我试图从我的模型导出数据到Excel电子表格。 我见过3种方法

  1. 使用电子表格gem,我不明白如何使用它,我看到的例子是写入本地文件,但我期待生成一个文件,每次用户点击一个链接。
  2. 创build一个名为export的方法,然后在那里运行查询,然后在我的视图中创build一个export.xls文件,并创build我想要导出到excel文件的表的文件,但是这种方法不允许我创build多个床单。
  3. 遵循这个教程, http://oldwiki.rubyonrails.org/rails/pages/HowToExportToExcel ,但这里并没有显示如何把链接放在视图中,在我看来,我在路线中丢失了一些东西,我可以给github所以你可以看看我的代码,如果需要的话。

我的select只是手动生成CSV文件。 喜欢:

File.new("data.csv", "w+") do |f| @my_data.each do |data| f << [data.title, data.body, ...].join(", ") + "\n" end end 

CSV文件可以使用excel或任何其他电子表格软件打开。

我在最近的Rails项目中使用writeexcel 。 一个快速和简单的方法来直接导出excel文件 – 没有CSV

要直接在你的视图中使用它,你必须注册writeexcel作为模板处理程序 – 这是我的主旨是excalty。 然后创build一个新的模板,如export.xls.writeexcel ,插入你的代码,你很好。

在这里插入我自己的gem,但你可以看看https://github.com/randym/acts_as_xlsx

根据axlsx gem的本地化,graphics,表格和格式,它可以为您提供更多的写入扩展或电子表格。

它还与积极的logging范围和方法链相结合。

博客与详细的使用示例: http ://axlsx.blogspot.com/

http://axlsx.blogspot.jp/2011/12/using-actsasxlsx-to-generate-excel-data.html

http://axlsx.blogspot.jp/2011/12/axlsx-making-excel-reports-with-ruby-on.html

在Github上: https : //github.com/randym/axlsx

在Rubygems上: https ://rubygems.org/gems/axlsx

在Rubytookbox上: https ://www.ruby-toolbox.com/projects/axlsx

基本上它涉及在你的控制器中build立一个响应者

  format.xlsx { xlsx_package = Post.to_xlsx begin temp = Tempfile.new("posts.xlsx") xlsx_package.serialize temp.path send_file temp.path, :filename => "posts.xlsx", :type => "application/xlsx" ensure temp.close temp.unlink end } 

和你的模型中的以下内容

  class Post < ActiveRecord::Base acts_as_xlsx 

上面的两篇博文给出了一个相当清晰的演练。