上一篇文章介绍了APEX中上传文件的方式,以纯文本文件为例说明了如何对上传的文件进行后续处理。PL/SQL可以直接对纯文本内容进行处理,那么如果直接上传xls二进制文件呢?通常,可以用Java Procedure做这件事,但是自APEX Listener 1.x 发布后,有更简单的方式实现对xls内容的处理。
1.10 版本之后,apex-config.xml 中多了下面这个参数:
false
将该参数设置为true则开启excel到collection的转换功能,简单设置步骤如下:
1. 添加File Browse…的Page Item,名字为P1_FILENAME,Storage Type 为 WWV_FLOW_FILES
2. 添加名为UPLOAD的Button Item,Button Request 设置为 xls2collection
运行该页面,选择一个xls后缀的Excel文件,点击UPLOAD按钮即可上传该Excel文件。

上传的文件和数据分别存放在wwv_flow_files和apex_collections中。其中COLLECTION_NAME的默认名称为Page Item的名称,此例中为P1_FILENAME,C001为Excel的TAB页名称,接下来的各字段为表格内容。
SELECT * FROM apex_collections a WHERE a.collection_name = 'P1_FILENAME'
apex_collections是视图,限制了security_group_id,你需要在应用程序中,并且是当前会话中使用。
删除Collection方式为:
apex_collection.delete_collection(p_collection_name => 'P1_FILENAME');
详细说明可参考APEX 4.0的API Reference文档中的APEX_COLLECTION章节。
有了APEX Listener,很多事情变得更简单了,当然,除了文档,APEX的文档令人吃惊的简单,很多内容都没有提及。

部署了APEX Listener,在哪里能找到apex-config.xml,请指教。
| 2010/11/16 @ 21:08
APEX Listener 不是自带了一个示例apex-config.xml 吗?
此外,通过listenerAdmin管理界面也可以生成一个apex-config.xml。
如果是用Tomcat,则该配置文件一般在路径 tomcat_home\temp\apex\ 下。
| 2010/11/16 @ 21:49