csv 导出数据到csv或者xls文件
1、引入csv功能
config/application.rb文件中添加
require 'csv'
config/intialize/mine_type.rb文件中添加
Mime::Type.register "application/xls", :xls
2、在module文件中添加方法(可跳过)
admin.rb文件中添加
def self.to_csv(options = {})
th_names = ["name","sex","age"]
CSV.generate(options) do |csv|
csv << th_names
all.each do |admin|
csv << admin.attribuates.values_at(*th_names)
end
end
end
3、在controller文件中添加数据查询,并且传给csv
admin_controller.rb文件
def index
@admins = Admin.all
respond_to do |format|
format.html
format.csv { send_date @admins.to_csv}
format.xls { send_date @admins.to_csv(col_seq: "\t")}
end
end
4、在view文件中添加下载按钮
index.html.erb文件中
<p>
Download:
<%= link_to "CSV", admins_path(format: "csv") %>
<%= link_to "xls", admins_path(format: "xls") %>
</p>
脚本中运行代码也可导出数据
CSV.open("file.csv", "wb") do |csv|
csv << ["name", "sex", "age"] #第一行标题
@admins.each do |admin|
csv << [admin[:name], admin[:sex], admin[:age]]
end
end