APEX-數據導出/打印 學習

前言:

 因爲公司使用了Oracle APEX構建應用,且在APEX新版本v20.2版本中加強了相關報表導出數據相關功能;正好如今作的事情也須要相似的功能,就先來學習一下Oracle的APEX相關功能及實現方式;爲本身優化實現相關功能作些積累吧。html

 先簡單介紹下APEX是什麼?sql

APEX是什麼:

 APEX:Oracle Application Express (APEX) 是低代碼開發平臺。藉助該平臺,您能夠構建功能先進的可擴展安全企業應用,而且可在任何位置部署應用。express

 使用 APEX,開發人員可快速開發並部署出色的應用,從而解決實際問題並當即創造價值。您無需精通各類技術,就能夠提供高級解決方案。您只需集中精力解決業務問題,其餘工做均可以交給 Oracle APEX 來處理。編程

 v20.2版本導出數據優化點:api

  • 內置PDF打印和Excel下載,用於交互式報告,交互式網格和經典報告。確保在您的區域屬性中啓用PDF和Excel做爲其餘下載格式。用戶能夠在下載對話框中更改頁面方向和大小。
  • 交互式報告-發送電子郵件:如今能夠附加全部下載格式。
  • 與BI Publisher的加強集成。
  • 新的APEX_REGION.EXPORT_DATAAPEX_DATA_EXPORT API,以編程方式生成PDF,CSV,Excel,HTML,JSON和XML文件。
  • 內置PDF如今支持中文,日文和韓文。

 如須要使用可在如下的地址申請工做區:安全

 申請免費工做區地址:session

  https://apex.oracle.com/pls/apex/f?p=4700:2:10115035671324:::RP::oracle

APEX中導出數據實現:

 1、普通表導出、打印實現app

  • 示例數據導入:

   進入:SQL工做室->實用程序->示例數據集->【EMP/DEPT】數據安裝ide

  • 建立應用:

   進入:應用程序構建器->建立->新建應用程序->建立應用程序;建立完成以下圖

   

  • 頁面設計:

   進入應用程序:進入主頁設計:添加經典報表元素->綁定數據表->支持導出和打印功能->進行打印設置:打印成Excel

    

 

 

  • 運行效果

   運行效果以下,點擊導出時導出該表csv文件內容;打印時輸出該表對於html內容

     

 2、交互式報表導出、打印

  • 設計頁面:在頁面中添加交互式報表->並綁定數據表

    

  • 預覽執行效果:操做->下載->選擇下載格式

 

  3、調用APEX提供API實現:

   在上面示例中添加按鈕調用:Export_Data接口實現數據導出

    

     

    執行代碼爲如下內容:    

DECLARE
    l_export       apex_data_export.t_export;
    l_region_id    number;
BEGIN

   SELECT region_id into l_region_id
     FROM apex_application_page_regions
    WHERE application_id = 36324--(應用程序ID)
      and page_id = 1--(頁碼id)
      and static_id = 'EXRep'--(區域靜態id-交互式報表需指定該id);
    
    l_export := apex_region.export_data (
         p_format       => apex_data_export.c_format_html,
         p_page_id      => 1,
         p_region_id    => l_region_id );
         
    apex_data_export.download( l_export );
END;

   修改頁面提交從新加載:

     

   運行效果:

    

  • 13 APEX_DATA_EXPORT(重點)APEX_DATA_EXPORT包含用於從Oracle Application Express導出數據的實現支持的文件類型包括:PDF,XLSX,HTML,CSV,XML和JSON。

   本次使用API服務來測試該接口功能:SQL工做室->RESTful服務->模塊->建立模塊(export)    

     建立模板和處理方法:

     

    添加執行腳本:

DECLARE
    l_context apex_exec.t_context; 
    l_export  apex_data_export.t_export;
BEGIN

    apex_session.create_session (
    p_app_id   => 36324,
    p_page_id  => 1,
    p_username => 'EXAMPLE USER' );

    l_context := apex_exec.open_query_context(
        p_location    => apex_exec.c_location_local_db,
        p_sql_query   => 'select * from emp' );

    l_export := apex_data_export.export (
                        p_context   => l_context,
                        p_format    => apex_data_export.c_format_pdf );

    apex_exec.close( l_context );

    apex_data_export.download( p_export => l_export );

EXCEPTION
    when others THEN
        apex_exec.close( l_context );
        raise;
END;

    導出接口方法參數說明:

參數 描述
p_context 來自EXEC基礎結構的上下文對象。
p_format 導出格式。有效值爲:XLSX,PDF,HTML,CSV,XML和JSON。
p_as_clob 導出爲CLOB而不是BLOB(默認爲FALSE)。
p_columns 以分列符開始的列屬性集合,而後按顯示順序。
p_column_groups 按級別和顯示順序收集列組屬性。
p_aggregates 報告彙總的集合。
p_highlights 收集報告要點。
p_file_name 定義導出的文件名。
p_print_config 用於EXCEL和PDF設置打印屬性。
p_page_header 文本顯示在文檔的標題部分。覆蓋的頁面標題p_print_config
p_page_footer 文本顯示在文檔的頁腳部分。覆蓋的頁面頁腳p_print_config
p_supplemental_text 全部下載格式頂部的文本。
p_csv_enclosed_by 用於CSV以封裝輸出。
p_csv_separator 用於CSV以分隔列值。
p_pdf_accessible 用於PDF以建立可訪問的PDF。
p_xml_include_declaration 用於XML以生成XML聲明做爲第一行。

總結:

 經過簡單使用感受APEX功能比較完善,能快速的構建出業務應用;導出接口功能比較完善,支持靈活。

 對於本身實現相關導出功能有參考價值。 

參考資料:

 https://blogs.oracle.com/apex/exploring-report-printing-in-apex-202

 https://docs.oracle.com/en/database/oracle/application-express/20.2/aeapi/APEX_DATA_EXPORT-EXPORT-Function.html#GUID-6109A537-50C4-4FB2-8414-7A554B19EC8E

相關文章
相關標籤/搜索