我正在尝试将数据从我的模型导出到Excel电子表格。我见过3种方式
答案 0 :(得分:7)
我的选择是手动生成CSV文件。像:
File.new("data.csv", "w+") do |f|
@my_data.each do |data|
f << [data.title, data.body, ...].join(", ") + "\n"
end
end
可以使用excel或任何其他电子表格软件打开CSV文件。
答案 1 :(得分:1)
我在最近的Rails项目中使用writeexcel。一种快速且简单易用的直接导出Excel文件的方法 - 无CSV !
要在视图中直接使用它,您必须将 writeexcel 注册为模板处理程序 - 这与我gist的做法相同。然后创建一个新的模板,如export.xls.writeexcel
,插入代码,你就可以了。
答案 2 :(得分:1)
在这里插入我自己的宝石,但你可以查看https://github.com/randym/acts_as_xlsx
在axlsx gem的本地化,图形,表格和格式方面,它比writeexcel或电子表格更多。
它还与活动记录范围和方法链集成。
Blogpost,详细用法示例: 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
基本上它涉及在控制器中设置响应者
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
上面的两篇博客文章给出了相当明确的演练。