APEX-資料匯出/列印 學習

chaney1992發表於2020-12-20

前言:

 由於公司使用了Oracle APEX構建應用,且在APEX新版本v20.2版本中增強了相關報表匯出資料相關功能;正好現在做的事情也需要類似的功能,就先來學習一下Oracle的APEX相關功能及實現方式;為自己優化實現相關功能做些積累吧。

 先簡單介紹下APEX是什麼?

APEX是什麼:

 APEX:Oracle Application Express (APEX) 是低程式碼開發平臺。藉助該平臺,您可以構建功能先進的可擴充套件安全企業應用,並且可在任何位置部署應用。

 使用 APEX,開發人員可快速開發並部署出色的應用,從而解決實際問題並立即創造價值。您無需精通各種技術,就可以提供高階解決方案。您只需集中精力解決業務問題,其他工作都可以交給 Oracle APEX 來處理。

 v20.2版本匯出資料優化點:

  • 內建PDF列印和Excel下載,用於互動式報告,互動式網格和經典報告。確保在您的區域屬性中啟用PDF和Excel作為其他下載格式。使用者可以在下載對話方塊中更改頁面方向和大小。
  • 互動式報告-傳送電子郵件:現在可以附加所有下載格式。
  • 與BI Publisher的增強整合。
  • 新的APEX_REGION.EXPORT_DATAAPEX_DATA_EXPORT API,以程式設計方式生成PDF,CSV,Excel,HTML,JSON和XML檔案。
  • 內建PDF現在支援中文,日文和韓文。

 如需要使用可在以下的地址申請工作區:

 申請免費工作區地址:

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

APEX中匯出資料實現:

 一、普通表匯出、列印實現

  • 示例資料匯入:

   進入:SQL工作室->實用程式->示例資料集->【EMP/DEPT】資料安裝

  • 建立應用:

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

   

  • 頁面設計:

   進入應用程式:進入主頁設計:新增經典報表元素->繫結資料表->支援匯出和列印功能->進行列印設定:列印成Excel

    

 

 

  • 執行效果

   執行效果如下,點選匯出時匯出該表csv檔案內容;列印時輸出該表對於html內容

     

 二、互動式報表匯出、列印

  • 設計頁面:在頁面中新增互動式報表->並繫結資料表

    

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

 

  三、呼叫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

 

相關文章