我有兴趣将Oracle-APEX生成的页面内容导出到外部文件,同时保留尽可能多的格式。最后,我想将它导出为.doc,.xls。或.pdf格式。现在,我正在使用.doc文件进行测试。
目前,我正在尝试通过创建一个PL / SQL匿名块“Process”来执行此操作,该块在按下“导出”按钮时执行。根据我在网上找到的一个例子,如果我在这个过程中使用以下代码,我可以将我页面中的一个项目输出到.doc文件:
DECLARE
test_blob BLOB;
BEGIN
dbms_lob.createtemporary(test_blob, FALSE);
dbms_lob.open(test_blob, dbms_lob.lob_readwrite);
DBMS_LOB.APPEND(test_blob, UTL_RAW.CAST_TO_RAW(:P4016_ITEM_NAME));
OWA_UTIL.mime_header('application/doc', FALSE);
HTP.p('Content-Length: ' || DBMS_LOB.getlength(test_blob));
htp.p('Content-Disposition: attachment; filename= "text.doc"');
OWA_UTIL.http_header_close;
WPG_DOCLOAD.download_file(test_blob);
dbms_lob.close(test_blob);
END;
但是,据我所知,我想在我的页面上输出一些包含表格的区域,这些区域不被视为项目(我对APEX仍然很新)。如果我在DMS_LOB.APPEND
行中包含表名,则会收到错误消息。有没有人知道引用这些区域的简单方法?
我发现的唯一解决方法是在导出的文件中复制页面,方法是根据我的APEX页面的HTML封装用于填充HTML表格的SQL查询的结果。换句话说,如果我想要斜体,我会做以下事情:
...
dbms_lob.append(test_blob, UTL_RAW.CAST_TO_RAW('<html><i>'));
dbms_lob.append(test_blob, [PARSED SQL QUERY]);
dbms_lob.append(test_blob, UTL_RAW.CAST_TO_RAW('</i></html>'));
如果有人知道更简单的方法,最好是简单地引用我的页面区域,我将非常感激。
答案 0 :(得分:0)
有一种方式(3种方式)来获取PDF - http://www.oracle.com/technetwork/developer-tools/apex/learnmore/custom-pdf-reports-1953918.pdf。 您还可以使用交互式报表,它具有导出选项。但是默认情况下它只能以HTML格式导出。
这不是你要求的,但你不需要编写代码。