利用sql*plus导出成excel和html的功能实现报表统计-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 2090579
  • 博文数量: 195
  • 博客积分: 4378
  • 博客等级: 上校
  • 技术积分: 4046
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-09 11:37
个人简介

白天和黑夜只交替没交换无法想像对方的世界

文章分类

全部博文(195)

文章存档

2014年(3)

2013年(20)

2012年(18)

2011年(107)

2010年(17)

2009年(5)

2008年(20)

2007年(5)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2012-06-19 08:40:37

利用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如下:

  1. create table t_grade(id int,name varchar2(10),subject varchar2(20),grade number);
  2. insert into t_grade values(1,'zorro','语文',70);
  3. insert into t_grade values(2,'zorro','数学',80);
  4. insert into t_grade values(3,'zorro','英语',75);
  5. insert into t_grade values(4,'seker','语文',65);
  6. insert into t_grade values(5,'seker','数学',75);
  7. insert into t_grade values(6,'seker','英语',60);
  8. insert into t_grade values(7,'blues','语文',60);
  9. insert into t_grade values(8,'blues','数学',90);
  10. insert into t_grade values(9,'pg','数学',80);
  11. insert into t_grade values(10,'pg','英语',90);
  12. insert into t_grade values(11,'tom','化学',90);
  13. commit;

 
脚本get_d_stat.sh内容如下:

  1. sqlplus -s dba_user/dbapasswd<<eof
  2. set linesize 200
  3. set term off verify off feedback off pagesize 999
  4. set markup html on entmap on spool on preformat off
  5. spool /apps/dba_tool/get_data/get_d_stat_`date --date "1 days ago" %f`.xls

  6. --spool get_d_stat_`date %f`.xls

  7. --spool tables.html

  8. @/apps/dba_tool/get_data/get_d_stat.sql;
  9. spool off
  10. exit;
  11. eof
脚本get_d_stat.sql 内容如下:
 

  1. select name,sum(case when subject='语文' then grade else 0 end) "语文",sum(case when subject='数学' then grade else 0 end) "数学",
  2. 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) |
给主人留下些什么吧!~~

2015-11-05 09:11:15

您好,请教一下导出来21万条数据90m为什么打开超慢啊,正常情况下我的电脑一下子就该打开了

|

2015-01-31 15:43:44

写的很好,请教个问题,怎么输出csv格式的呢,xls格式占用空间较大,3千万数据导出以后就到达10g了, 我想通过这个方式导出千万级别的表。plsql工具太卡了不行。

|

2015-01-22 14:18:25

帆软报表也可以实现这样的功能

|

2012-06-19 19:47:29

写的很好,希望写出更多好文章。

|
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图