csv 导出数据到csv或者xls文件

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值