APEX-數據導出/列印 學習
- 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_DATA和APEX_DATA_EXPORT API,以編程方式生成PDF,CSV,Excel,HTML,JSON和XML文件。
- 內置PDF現在支援中文,日文和韓文。
如需要使用可在以下的地址申請工作區:
申請免費工作區地址:
//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功能比較完善,能快速的構建出業務應用;導出介面功能比較完善,支援靈活。
對於自己實現相關導出功能有參考價值。
參考資料:
//blogs.oracle.com/apex/exploring-report-printing-in-apex-202
//docs.oracle.com/en/database/oracle/application-express/20.2/aeapi/APEX_DATA_EXPORT-EXPORT-Function.html#GUID-6109A537-50C4-4FB2-8414-7A554B19EC8E