2009-12-01 55 views
0

也許是一個古怪的問題。做一個Model.all或類似的東西讓我有點漂亮的數組輸出,[#<Model id:5, name:"Blahblah">,#<Model id:5, name:"Etc">]。有沒有簡單的方法將其轉換爲CSV/Excel格式的屬性作爲列?解析Rails控制檯輸出到Excel中

回答

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 

警告:它不會是完美的,你仍然會得到啓動,並與"結尾的字符串。但刪除開始和結束引號非常簡單。