由于公司使用了Oracle APEX构建应用,且在APEX新版本v20.2版本中增强了相关报表导出数据相关功能;正好现在做的事情也需要类似的功能,就先来学习一下Oracle的APEX相关功能及实现方式;为自己优化实现相关功能做些积累吧。
先简单介绍下APEX是什么?
APEX:Oracle Application Express (APEX) 是低代码开发平台。借助该平台,您可以构建功能先进的可扩展安全企业应用,并且可在任何位置部署应用。
使用 APEX,开发人员可快速开发并部署出色的应用,从而解决实际问题并立即创造价值。您无需精通各种技术,就可以提供高级解决方案。您只需集中精力解决业务问题,其他工作都可以交给 Oracle APEX 来处理。
v20.2版本导出数据优化点:
如需要使用可在以下的地址申请工作区:
申请免费工作区地址:
https://apex.oracle.com/pls/apex/f?p=4700:2:10115035671324:::RP::
一、普通表导出、打印实现
进入: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;
修改页面提交重新加载:
运行效果:
本次使用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
原文:https://www.cnblogs.com/cwsheng/p/14164831.html