我正在关注这个railscast视频,但我在将数据导出到 excel(或 CSV)时遇到了严重的困难。
我在前端显示的一些数据中使用 will_paginate,如下所示:
sql = "select complex..."
@data = paginate_by_sql([sql],
:per_page => params[:rows],
:page => params[:page])
所以,按原样,我认为这应该可行:
respond_to do |format|
format.html
format.xls { send_data @data.to_csv(:col_sep => "\t") }
end
它实际上正确地下载了一个xls文件,内容都搞砸了,它每列显示一行,内容如下:
#<Product:0x00000004c83328>
PS -> 使用 Rails 最新版本
:: 编辑 :: 每列一行是指仅在我的 excel 表和这一行上的一行
A栏=#<Product:0x00000004c83328>
B栏=#<Product:0x00000004c83329>
C 列 = #<Product:0x00000004c8333>
(30 列)
更新
做了一个简单的测试练习,最后只在一个列中再次显示所有列:
csv_string = CSV.generate(:col_sep => ",") do |csv|
csv << ["row", "of", "CSV", "data"]
csv << ["another", "row"]
end
respond_to do |format|
format.html
format.csv { send_data csv_string,
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=records.csv" }
end
(:col_sep => ",")
我想是可选的。
结果: