思路:OAF的运行机制中是将数据库的数据存放在VO 之中,所以新建VO 在CO中通过AM调用VO 获取数据,在通过Java 对数据进行遍历写进文件中 (利用java中I/O 流和Apache 的POI组件)
新建CO的过程略
我是通过EO
导入POI的jar包
根据需要导入jar包
Jar包导入过后 做一个test页面 显示数据 并制作一个button 作为导出触发(过程略)
设置Button 的 fireAction在CO中的processFormRequest函数进行操作
下载:
VO中的数据转byte(将Excel方法和CSV 同时写入注意区别 ,CSV的定义是逗号分隔值Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号)
CSV为一长串字符串 由字符分开 大致格式如下:
注意:csv由excel 打开表头第一个字符为小写字符不然打开会报错(不过点击继续打开,仍可以打开)
CSV是可变长的字符串故使用StringBuffer
使用字符\r\n进行换行不换行则会第二行以后的数据全显示在第一行最后一个单元格之中
附:全部查询(我测试时将表中数据全部查询,使用vo.setMaxFetchSize(-1)查询全部数据)
上面演示的是导出csv文件和xls文件 ,xlsx文件只需要将HSSF 全部改成XSSF 并导入相关类
导出时发现问题是xlsx明显比xls 慢许多 csv 文件却金额xls一样的速度 (后期解决补上)
导出还有一种是OAF的exportbutton 类型
具体可以参考: OAF_Personalization_To_Export_Data_Into_Excel.doc
上传可以参考Jarwang的OracleEBS R12-OAF开发笔记那里面有具体上传的方法
参考文档: http://blog.csdn.net/szwangdf/article/details/39053859
http://bbs.erp100.com/forum.php?mod=viewthread&tid=100651&extra=page%3D1&page=1