前一篇博文中记录了“利用EasySQLMAIL实现自动数据提取和邮件发送功能”,里面的方法只能将SQL语句查询出来的数据一行一行地原样转换到Excel表格中。但我们有一些Excel表格的样式是设计好了的,比如这种表格:
表格中的单元格都是事前设计好的。每星期都需要执行几个SQL语句,并且把SQL语句的统计结果填写到表格中,发给其他部门。
仔细研究了EasySQLMAIL的手册和网站上的教程,发现其实可以用这个工具来实现自动填写和发送。
经过两天的配置和测试,终于成功。在这里把方法记录一下。
1、先设计好Excel模板表格。主要是把表格中要填数字的地方用数据单元格标识出来,这样EasySQLMAIL才能识别出哪些地方需要填写数据。修改后的模板变成这样:
2、为了让统计表能够扩展,需要在A5:F5的范围内创建一个“名称”。选中A5:F5这个范围,按Ctrl+F3,名称输入"销售统计表":
3、设置合计行公式。也是要在B3,C3,D3,E3,F3上分别创建“名称”,创建后的名称像下面这样:
4、设置合计行的公司为SUM(销售量)、SUM(销售金额)、SUM(购物卡支付) 、SUM(现金支付)、SUM(POS机支付)。就是将SUM公式中的单元格编号换成“名称”。
5、在EasySQLMAIL中创建一个任务,把做好的附件模板上传到系统中。
6、设置取数的SQL语句。取数SQL一共有两个,一个是取分公司名称和统计时间的SQL,还有一个是取统计表内容的SQL。
先设置取分公司名称和统计时间的SQL:
然后设置取统计表数据的SQL。注意,“命名区域”要选择刚才新建的名称“销售统计表”。
附件模板设置好后,再简单设置一下邮件正文和收件人等内容,最后再设置一下执行计划:
执行计划的起始时间要选成星期一的日期,凌晨3点运行一次。
下面是执行后的效果:
这样设置后,任务每个星期一早上3点执行,并且把表格填好后发给指定的人。例子中的查询条件stat_date = to_date(‘2015-10-12‘,‘yyyy-mm-dd‘)在实际使用的时候需要改成stat_date = trunc(sysdate),就是取当天的日期。
这几天比较忙,等空下来再研究一下在邮件里面显示统计图表的问题。
更详细的配置方法可以参考EasySQLMAIL的官方网站上的手册和文档。
http://www.easysqlmail.com 官方网站
http://www.easysqlmail.com/manual/index.html 操作手册
http://www.easysqlmail.com/docreader.php?id=346 EasySQLMAIL使用教程-使用自定义Excel文件模板
http://www.easysqlmail.com/docreader.php?id=348 在Excel表格中使用命名区域