2011-03-30 61 views

回答

3

可以使用FasterCSV寶石。可以使用to_csv方法。

def index 
    @records = .... 
    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @records } 
    format.csv { @records.to_csv } 
    end 
end 

或自定義輸出並在控制器中使用send_data方法。

format.csv do 
    csv_string = FasterCSV.generate do |csv| 
    # header row 
    csv << ["id", "Column1", "Column1"] 
    # data rows 
    @records.each do |r| 
     csv << [r.id, r.column1, r.column2] 
    end 
    # send it to the browser 
    send_data csv_string, 
      :type => 'text/csv; charset=iso-8859-1; header=present', 
      :disposition => "attachment; filename=records.csv" 
end 
1

我會建議使用Spreadsheet這是成熟的。我正在使用它與Rails 3沒有任何問題。

的整個過程是:

book = Spreadsheet::Workbook.new 
sheet = book.create_worksheet :name => 'Customers' 
sheet.row(0).concat %w{Name Country Acknowlegement} 
book.write '/path/to/output/excel-file.xls' 
+0

用0.x版本號成熟。 hmmmm – Yule 2011-03-30 10:45:06

+0

電子表格也適用於我,直到工作表的大小變得太大。它仍然有效,但在數據庫查詢完成後創建XLS文件非常慢。 – Teddy 2011-03-30 14:10:25

0

Ruby 1.9的有一個內置的CSV庫非常類似的API作爲FasterCSV寶石(實際上是創業板得到了融入紅寶石!)。