将Rails控制台输出解析为Excel

时间:2009-12-01 19:10:20

标签: ruby-on-rails

也许是一个古怪的问题。做一个Model.all之类的东西让我得到一个相当漂亮的数组输出[#<Model id:5, name:"Blahblah">,#<Model id:5, name:"Etc">]。有没有一种简单的方法可以将其转换为CSV / Excel格式,其属性为列?

1 个答案:

答案 0 :(得分:2)

使用FasterCSV gem从模型列表中生成CSV。

但是没有好办法自动完成。因此,您应该为模型添加一个类方法,从数组中生成CSV。

示例:

class Model < ActiveRecord::Base

  require 'FCSV'
  def self.to_csv list 
  csv_string = FasterCSV.generate do |csv|
    attributes_for_csv = [:id, :name]
    csv << attributes_for_csv.map{|a| a.to_s.titlize}
    list.each do |item|
      csv << attributes_for_csv.map{|a| item.send(a)}
    emd
  end

  ...
end

Model.to_csv Model.all

警告:它不会是完美的,你仍然会得到一个以"开头和结尾的字符串。但是删除开始和结束引号非常容易。