将数据表导出成excel

[转][http://tb.blog.csdn.net/TrackBack.aspx?PostId=1844264]

首先是安装 gem install spreadsheet-excel

其次 在script 文件夹中新建一个叫export的文件,里面代码如下:

#!/usr/bin/env ruby

require File.dirname(__FILE__) + '/../config/environment'
require "spreadsheet/excel"
include Spreadsheet
users=User.find_by_sql("select count(*) from users where created_at < '#{Time.now.strftime("%Y-%m-%d")}' and created_at > '#{1.day.ago.strftime("%Y-%m-%d")}'")

workbook = Excel.new("#{RAILS_ROOT}/public/reports/report_#{Time.now.strftime('%Y-%m-%d')}.xls")
worksheet = workbook.add_worksheet("Report of #{1.day.ago.strftime('%Y-%m-%d')}")

worksheet.write(0, 0, "#{1.day.ago.strftime('%Y-%m-%d')}")

worksheet.write(1, 0, "Daily Registered users")

worksheet.write(2, 0, "#{users[0].count.to_i}")

workbook.close
第三:执行ruby script/export. 到public文件夹中看一下,是不是多了一个excel表格。

有时我们需要将导出来的表格作为邮件附件发送出去。那么我们需要在上面的代码底部,加入这段:
Notifier.deliver_export
model代码如下:

class Notifier < ActionMailer::Base

def export
@recipients = "XXX@gmail.com" #收件人邮箱
#@cc = "XXX@sina.com","XXX@163.com" #抄送人邮箱
@subject = "#{Time.now.strftime('%Y-%m-%d')} data"
@body = ""
@data = ""
File.open("#{RAILS_ROOT}/public/reports/report_#{Time.now.strftime('%Y-%m-%d')}.xls", "rb").each { |fp| @data<<fp }
attachment :content_type =>"application/vnd.ms-excel",
:filename => "export_#{Time.now.strftime('%Y-%m-%d')}.xls" ,
:body => @data
end
end
这样就实现了使用spreadsheet-excel 把数据导入到Excel表格中,并且作为邮件附件发送给别人了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值