zoukankan      html  css  js  c++  java
  • 利用SQL*PLUS导出成EXCEL和html的功能实现报表统计

    利用SQL*PLUS导出成EXCEL和html的功能实现报表统计: 也就是生成HTML格式,但是同样的格式输出到EXCEL中也能正常显示。
     
    关键就是这些参数的设定
    set markup html on entmap ON spool on preformat off
     
    参数注解如下: ======================================================================== TABLE text 设置<TABLE>标签的属性,如BORDER, CELLPADDING, CELLSPACING和WIDTH。 默认情况下,<TABLE> 的WIDTH属性设置为90%,BORDER属性设置为1。
    ENTMAP {ON|OFF} 指定在SQL * Plus中是否用HTML字符实体如&lt;, &gt;, &quot; and &amp;等替换特殊字符<, >, " and & 。默认设置是ON。
    SPOOL {ON|OFF} 指定是否在SQL*Plus生成HTML标签<HTML> 和<BODY>, </BODY> 和</HTML>。默认是OFF。 注:这是一个后台打印操作,只有在生成SPOOL文件生效,在屏幕上并不生效。
    PRE[FORMAT] {ON|OFF} 指定SQL*Plus生成HTML时输出<PRE>标签还是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的功能实现报表统计已经成功。

  • 相关阅读:
    搭建Java环境
    【leetcode】257. 二叉树的所有路径
    【leetcode】563. 二叉树的坡度
    【leetcode】401. 二进制手表
    【leetcode】859. 亲密字符串
    【leetcode】1441. 用栈操作构建数组
    【leetcode】1502. 判断能否形成等差数列
    【leetcode】605. 种花问题
    【leetcode】1252. 奇数值单元格的数目
    【leetcode】1640. 能否连接形成数组
  • 原文地址:https://www.cnblogs.com/weixun/p/3087015.html
Copyright © 2011-2022 走看看