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

时间:2011-07-19 21:58:57

标签: ruby-on-rails ruby ruby-on-rails-3 excel spreadsheet

我正在尝试将数据从我的模型导出到Excel电子表格。我见过3种方式

  1. 使用我不懂的电子表格宝石如何使用它, 我看到的例子是写一个本地文件,但我正在寻找 每次用户点击链接时生成一个文件。
  2. 创建一个名为export的方法,然后在那里运行查询 在我的视图中创建一个export.xls文件,并创建该文件 表我想导出到excel文件,但这种方法 不允许我创建多个工作表。
  3. 按照本教程http://oldwiki.rubyonrails.org/rails/pages/HowToExportToExcel, 但是这里没有显示如何将链接放在视图中,看起来我在路线中遗漏了一些东西,我可以给github所以你可以在需要的时候查看我的代码。

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

上面的两篇博客文章给出了相当明确的演练。