本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理。

    1.空模版文件下载:将Excel文件视为普通文件提供下载操作。

    2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库。

    3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理。


实现的基本思路,由ADF Faces组件触发文件下载事件,将输出流引致ManagedBean的事件处理方法中,由ManagedBean实现找到目标文件,组织数据内容,并输出文件流数据,浏览器客户端接到文件流后会完成剩余的下载过程。




第一阶段:空模版文件下载

新建立工程名为:DemoExcelExp

ADF Faces导出Excel文件【附样例工程】_第1张图片


创建一个JSP页面。

ADF Faces导出Excel文件【附样例工程】_第2张图片


拖入一个按钮

ADF Faces导出Excel文件【附样例工程】_第3张图片


为按钮增加客户端事件:文件下载。

ADF Faces导出Excel文件【附样例工程】_第4张图片

ADF Faces导出Excel文件【附样例工程】_第5张图片


操作之后页面的代码内容中,增加了没有设定属性的按钮事件标签。

ADF Faces导出Excel文件【附样例工程】_第6张图片


在“结构”视图中可以选中事件节点,并在属性Tab面板设定下载文件类型和文件名称。 

ADF Faces导出Excel文件【附样例工程】_第7张图片


点击“Method”输入框旁边的下箭头,可以在IDE的辅助下建立管理Bean,并生成下事件的处理方法。

ADF Faces导出Excel文件【附样例工程】_第8张图片

ADF Faces导出Excel文件【附样例工程】_第9张图片


操作完成后,JSP页面的代码为

ADF Faces导出Excel文件【附样例工程】_第10张图片


现在可以准备一个目标模版文件,将其放置在管理Bean源代码所在的文件夹内即可。模板文件有1行数据,分别是Demo1,Demo2,Demo3,Demo4

ADF Faces导出Excel文件【附样例工程】_第11张图片


注意:这里需要检查JDeveloper的工程设定,确保编译过程会将Excel文件一并拷贝到输出目录中。

ADF Faces导出Excel文件【附样例工程】_第12张图片


修改管理Bean的事件处理代码,通过类加载资源的方式找到并读取模板文件,然后将文件内容输出至事件导入的输出流对象中。

ADF Faces导出Excel文件【附样例工程】_第13张图片


在JSP页面右键选择“Run”运行页面。

ADF Faces导出Excel文件【附样例工程】_第14张图片


点击“模板下载”按钮,即可下载之前的模板文件了。

ADF Faces导出Excel文件【附样例工程】_第15张图片

ADF Faces导出Excel文件【附样例工程】_第16张图片




第二阶段:数据文件输出

加入第二个按钮:

ADF Faces导出Excel文件【附样例工程】_第17张图片


输出数据文件,需要涉及到对Excel文件内容的处理,需要引入相应的类库,此处引用POI库完成Excel内容处理。

ADF Faces导出Excel文件【附样例工程】_第18张图片


修改管理Bean中的事件处理方法。

ADF Faces导出Excel文件【附样例工程】_第19张图片


然后即可执行看效果了,点击第二个按钮所下载的文件,就是由管理Bean创建并输出的内容了。

ADF Faces导出Excel文件【附样例工程】_第20张图片



第三阶段:模版文件填充数据后下载


增加第三个按钮

ADF Faces导出Excel文件【附样例工程】_第21张图片


修改管理Bean的事件处理代码

ADF Faces导出Excel文件【附样例工程】_第22张图片


运行看到下载的文件有2行内容,第一行是模板默认写入的内容,第二行是由程序控制写入的内容。

ADF Faces导出Excel文件【附样例工程】_第23张图片