熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

使用Text

2022-06-13   來源: Oracle 

   前言
  使用OracleDeveloper做系統最大的惡夢莫過於做報表使用ReportBuilder做的報表用戶接受程度非常之底使用OLE生成EXCEL則需要耗用大量的內存資源如果系統於BS模式則使用OLE生成XLS報表成了系統最大的執行隱患
  今天從莫兄關於SLK的文章中得到啟發如果使用SLK生成XLS報表再通過WebShow_Document調用則可以基本實現OracleDeveloper的報表問題
  問題是SLK的相關知識目前較難尋找對於報表編制人員也較麻煩於是花了點時間編制了一個PLL和相關的實例希望可以為大家的報表編制拓展思路同時也希望各位同仁可以不斷擴充該程序包的功能使之成為真正實用的SLK文件生成工具
  
   條件與限制
   根據莫兄的資料顯示SLK不能實現合並單元格邊框線<單實線以外>底紋<灰色底紋以外>圖形圖表對象鏈接分頁符工作表屬性打印頁面設置等等所以報表中若涉及該EXCEL對象則不用此SLK程序包
   由於時間關系目前程序包存在幾個問題垂直對齊未完成字體設置有限定<宋體8/12/16/26,宋體加粗12/16/24,字體定義需要預定義,目前尚未了解如何直接定義定體>
   近期內希望可以實現的拓展功能再做一個程序包傳入SQL語句自動生成SLK並在WEB頁中直接顯示此時即可實現長久以來的夢想定義數據源實現動態SQL查詢<原來想用JAVABEAN來實現>
  
  點擊此處下載armokrar
  
  我編譯了一個i的包--土撥鼠!!!
  點擊此處下載armokrar
  
   代碼<考慮許多同仁沒有安裝DS9i,所以將源代碼貼上,以方便大家
  PACKAGE Fmp_SlkReport IS
  -------------------------------------
  --設置創建SLK文件--------------------
  -------------------------------------
  Procedure SP_CreateSlkFile
  (P_SlkFile In Out Text_Io.File_Type --SLK文件對象
  ,P_FileName In VarChar2 --要創建的文件名
  );
  
  -------------------------------------
  --設置關閉SLK文件--------------------
  -------------------------------------
  Procedure SP_CloseSlkFile
  (P_SlkFile In Out Text_Io.File_Type --SLK文件對象
  );
  
  -------------------------------------
  --設置單元格的值---------------------
  -------------------------------------
  Procedure SP_TransValue
  (
  P_SlkFile In Text_Io.File_Type
  ,P_Row In Number --傳入行值
  ,P_Col In Number --傳入列值
  ,P_Value In Number); --傳入要設定的值,數值型
  
  Procedure SP_TransValue
  (
  P_SlkFile In Text_Io.File_Type
  ,P_Row In Number --傳入行值
  ,P_Col In Number --傳入列值
  ,P_Value In Varchar2); --傳入要設定的值,字符型
  
  Procedure SP_TransValue
  (
  P_SlkFile In Text_Io.File_Type
  ,P_Row In Number --傳入行值
  ,P_Col In Number --傳入列值
  ,P_Value In Date --傳入要設定的值,日期型
  ,P_DataFormat In VarChar2:='yyyy.mm.dd'--要轉換為日期的格式
  );
  
  -------------------------------------
  --設置邊框線,只能是單實線邊框-------
  -------------------------------------
  Procedure SP_SetBorder
  (
  P_SlkFile In Text_Io.File_Type
  ,P_StartRow In Number --傳入行值
  ,P_StartCol In Number --傳入起始列
  ,P_EndRow In Number --傳入終止行
  ,P_EndCol In Number --傳入終止列
  );
  
  -------------------------------------
  --設置行高---------------------------
  -------------------------------------
  Procedure SP_SetRowHeight
  (
  P_SlkFile In Text_Io.File_Type
  ,P_StartRow In Number --傳入行值
  ,P_EndRow In Number --傳入起始列
  ,P_RowHeight In Number --要設定的高度
  );
  
  -------------------------------------
  --設置列寬---------------------------
  -------------------------------------
  Procedure SP_SetColWidth
  (
  P_SlkFile In Text_Io.File_Type
  ,P_StartCol In Number --傳入行值
  ,P_EndCol In Number --傳入起始列
  ,P_ColWidth In Number --要設定的列寬
  );
  
  -------------------------------------
  --設置水平居中---------------------------
  -------------------------------------
  Procedure SP_SetVerticalAlign
  (
  P_SlkFile In Text_Io.File_Type
  ,P_StartRow In Number --傳入行值
  ,P_StartCol In Number --傳入起始列
  ,P_EndRow In Number --傳入終止行
  ,P_EndCol In Number --傳入終止列
  ,P_Type In Number --居中方式
  );
  
  -------------------------------------
  --設置垂直居中---------------------------
  -------------------------------------
  Procedure SP_SetHorizontalAlign
  (
  P_SlkFile In Text_Io.File_Type
  ,P_StartRow In Number --傳入行值
  ,P_StartCol In Number --傳入起始列
  ,P_EndRow In Number --傳入終止行
  ,P_EndCol In Number --傳入終止列
  ,P_Type In Number --居中方式
  );
  
  -------------------------------------
  --設置字體---------------------------
  -------------------------------------
  Procedure SP_SetFontstype
  (
  P_SlkFile In Text_Io.File_Type
  ,P_StartRow In Number --傳入行值
  ,P_StartCol In Number --傳入起始列
  ,P_EndRow In Number --傳入終止行
  ,P_EndCol In Number --傳入終止列
  ,P_FontType In Varchar2:='A12' --字體名稱,值表如下:A8:宋體8;A10:宋體10;A12:宋體12;A16:宋體16;A24:宋體24;B12:宋體加黑12;B16:宋體加黑16;B24:宋體加黑24;
  );
  
  END Fmp_SlkReport;
  PACKAGE Body Fmp_SlkReport IS
  -------------------------------------
  --設置創建SLK文件--------------------
  -------------------------------------
  Procedure SP_CreateSlkFile
  (P_SlkFile In Out Text_Io.File_Type --SLK文件對象
  ,P_FileName In VarChar2 --要創建的文件名
  )
  Is
  Begin
  --創建並打開文件
  P_SlkFile := Text_IO.Fopen(P_FileName, 'W');
  --寫入SLK文件頭的相關字符
  Text_IO.PUTF(P_SlkFile, 'ID;PWXL;N;E'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;PGeneral'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P0.00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#,##0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#,##0.00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#,##0;;\-#,##0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#,##0;;[Red]\-#,##0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#,##0.00;;\-#,##0.00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#,##0.00;;[Red]\-#,##0.00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P"$"#,##0;;"$"\-#,##0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P"$"#,##0;;[Red]"$"\-#,##0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P"$"#,##0.00;;"$"\-#,##0.00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P"$"#,##0.00;;[Red]"$"\-#,##0.00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P0%'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P0.00%'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P0.00E+00'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P##0.0E+0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#\ ?/?'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P#\ ??/??'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pyyyy/m/d'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pd/mmm/yy'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pd/mmm'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pmmm/yy'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Ph:mm\ AM/PM'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Ph:mm:ss\ AM/PM'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Ph:mm'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Ph:mm:ss'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pyyyy/m/d\ h:mm'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pmm:ss'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;Pmm:ss.0'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P@'|| Chr(10));
  Text_IO.PUTF(P_SlkFile, 'P;P[h]:mm:ss'|| Chr(10));
  Text_IO.
From:http://tw.wingwit.com/Article/program/Oracle/201311/18862.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.