반응형

여러가지 방법이 있겠지만

 

엑셀에서 HTML 문서를 읽을 수 있다는 점에 착안해서 구현한 방법입니다.

 

HTML로 테이블을 하나 만들어서 출력해버리면 엑셀에서 그대로 뿌려주는게 가능합니다.

 

1. HTML 헤더부 생성

2. 본문에 테이블 및 데이터 출력

3. HTML 푸터부 생성

4. spool할때 spool 파일의 확장자를 xls로 출력

 

PS. 데이터 항목에 엑셀 함수를 뿌리면 엑셀에서 불러왔을때 해당 함수가 수행됩니다.

 

 

 

 

UTL_FILE.PUT_LINE(v_FileHandle, '<html>');
UTL_FILE.PUT_LINE(v_FileHandle, '<head>');
UTL_FILE.PUT_LINE(v_FileHandle, '<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">');
UTL_FILE.PUT_LINE(v_FileHandle, '<meta name="generator" content="SQL*Plus 10.2.0">');
UTL_FILE.PUT_LINE(v_FileHandle, '<style type=''text/css''> body {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} p {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} table,tr,td {font:10pt Arial,Helvetica,sans-serif; color:Black; background:#f7f7e7; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;} th {font:bold 10pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99; padding:0px 0px 0px 0px;} h1 {font:16pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} h2 {font:bold 10pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-top:4pt; margin-bottom:0pt;} a {font:9pt Arial,Helvetica,sans-serif; color:#663300; background:#ffffff; margin-top:0pt; margin-bottom:0pt; vertical-align:top;}</style><title>SQL*Plus Report</title>');
UTL_FILE.PUT_LINE(v_FileHandle, '</head>');
UTL_FILE.PUT_LINE(v_FileHandle, '<body>');
UTL_FILE.PUT_LINE(v_FileHandle, '<p>');
UTL_FILE.PUT_LINE(v_FileHandle, '<table border=''1'' width=''90%'' align=''center'' summary=''Script output''>');

 

 

<위와 같이 HTML 헤더부를 생성>
 
 
 
 FOR data_rec IN GET_DATA_01 LOOP
UTL_FILE.PUT_LINE(v_FileHandle, '<tr>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td>');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.TX_DATE);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.TOT);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.CARD);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.CAPI);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.DUP);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.NODATA);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.YESDATA);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
        UTL_FILE.PUT_LINE(v_FileHandle,data_rec.CORRATE);
UTL_FILE.PUT_LINE(v_FileHandle, '</td>');
UTL_FILE.PUT_LINE(v_FileHandle, '<td align="right">');
v_Rows := v_Rows + 1;
    END LOOP;
 
<커서를 사용한 데이터 출력부>
 
 
 
UTL_FILE.PUT_LINE(v_FileHandle, '</table>');
UTL_FILE.PUT_LINE(v_FileHandle, '<p>');
UTL_FILE.PUT_LINE(v_FileHandle, '</body>');
UTL_FILE.PUT_LINE(v_FileHandle, '</html>');
 
<HTML 문서의 푸터부를 구현>
반응형
반응형

물론 난 백업 스크립트를 사용해서 백업하지만

윈도우 상에서 일괄적으로 백업 받을때

(낱개로는 TOAD등 툴을 통해 받을수 있지만...)

사용하면 좋은 프로그램...


프로시져백업.zip


반응형

+ Recent posts