利用sql*plus导出成excel和html的功能实现报表统计:
也就是生成html格式,但是同样的格式输出到excel中也能正常显示。
关键就是这些参数的设定
set markup html on entmap on spool on preformat off
参数注解如下:
========================================================================
table text
设置标签的属性,如border, cellpadding, cellspacing和width。
默认情况下,
的width属性设置为90%,border属性设置为1。
entmap {on|off}
指定在sql * plus中是否用html字符实体如<, >, " and &等替换特殊字符<, >, " and & 。默认设置是on。
spool {on|off}
指定是否在sql*plus生成html标签 和,
和。默认是off。
注:这是一个后台打印操作,只有在生成spool文件生效,在屏幕上并不生效。
pre[format] {on|off}
指定sql*plus生成html时输出
标签还是html表格,默认是off,因此默认输出是写html表格。
=========================================================================
通过sql*plus我们可以构建友好的输出,满足多样化用户需求。
本例通过简单示例,介绍通过sql*plus输出xls,html两种格式文件.
首先创建两个脚本:
1.get_d_stat.sh 用以设置环境,主要调用具体脚本
2.get_d_stat.sql 为获取具体数据之脚本
创建实验表t_grade如下:
- create table t_grade(id int,name varchar2(10),subject varchar2(20),grade number);
- insert into t_grade values(1,'zorro','语文',70);
- insert into t_grade values(2,'zorro','数学',80);
- insert into t_grade values(3,'zorro','英语',75);
- insert into t_grade values(4,'seker','语文',65);
- insert into t_grade values(5,'seker','数学',75);
- insert into t_grade values(6,'seker','英语',60);
- insert into t_grade values(7,'blues','语文',60);
- insert into t_grade values(8,'blues','数学',90);
- insert into t_grade values(9,'pg','数学',80);
- insert into t_grade values(10,'pg','英语',90);
- insert into t_grade values(11,'tom','化学',90);
- commit;
脚本get_d_stat.sh内容如下:
- sqlplus -s dba_user/dbapasswd<<eof
- set linesize 200
- set term off verify off feedback off pagesize 999
- set markup html on entmap on spool on preformat off
- spool /apps/dba_tool/get_data/get_d_stat_`date --date "1 days ago" %f`.xls
- --spool get_d_stat_`date %f`.xls
- --spool tables.html
- @/apps/dba_tool/get_data/get_d_stat.sql;
- spool off
- exit;
- eof
脚本get_d_stat.sql 内容如下:
- select name,sum(case when subject='语文' then grade else 0 end) "语文",sum(case when subject='数学' then grade else 0 end) "数学",
- sum(case when subject='英语' then grade else 0 end) "英语" ,sum(case when subject='化学' then grade else 0 end) "化学" from t_grade group by name;
运行脚本get_d_stat.sh后,会在/apps/dba_tool/get_data/目录下生成get_d_stat_2012-06-18.xls的报表文件。效果图如下:
name |
语文 |
数学 |
英语 |
化学 |
seker |
65 |
75 |
60 |
0 |
blues |
60 |
90 |
0 |
0 |
tom |
0 |
0 |
0 |
90 |
pg |
0 |
80 |
90 |
0 |
zorro |
70 |
80 |
75 |
0 |
到此为止,利用sql*plus导出成excel和html的功能实现报表统计已经成功。
阅读(8142) | 评论(4) | 转发(4) |