请阅读word文档
开发意图:
在web开发中经常需要将jsp或html页面中表格数据导出为pdf、doc、xls等格式。然而在实现这一功能用到了一些开源的组件,每实现这一功能时都需要编写大量重复性代码。由此,对该部分进行了封装,做到通用性,在有需求的情况下,只需要拷贝相应的组件或依赖的JAR包到你的工程中,进行配置即可。
功能:
本组件可以将表格中的内容导出为pdf、doc、xls、jpg(采用了ImageIo,导出图片效果不是很好)。
上述四种类型的报表组件所使用的技术
pdf使用到了iText.jar由于需要支持中文所有用到了亚洲字体包iTextAsian.jar
doc word文档这里并没有使用到jacob,而使用了iText的另一个jar包iText-rtf-2.1.7.jar,借助该jar可生成rtf格式的文档,而指定文件后缀名时指定为.doc即为word文档,之所以使用该jar,是因为它简单方便。
xls使用了apache的开源组件poi-3.6-20091214.jar
jpg使用jdk自带的ImageIo
jquery 项目中用到了jquery,使用jquery遍历页面表格中的内容,然后将数据发送到后台对数据进行处理,根据用户需求生成对应的文档。
环境:
开发环境:
WindowsXP sp3/Windows7+jdk1.6.13+javaee1.4/javaee5+myeclipse6.5+tomcat5.5/tomcat6.0+jquery
测试环境:
WindowsXP sp3/Windows7+jdk1.6.13+javaee1.4/javaee5+IE8+firefox3.6+tomcat5.5/tomcat6.0
组件包
核心组件:com.future.report_1.0.0.201007291116.jar
依赖的JAR:
iText-2.1.7.jar①
iTextAsian.jar②
iText-rtf-2.1.7.jar③
poi-3.6-20091214.jar④
注:其中①②项为生成pdf所依赖的jar包
③项为生成doc文档所依赖的jar包当然它同时依赖①②项
④为生成excel所依赖的jar包
com.future.report_1.0.0.201007291116.jar类明细图
com.future.report.Activator此类实现了osgi的org.osgi.framework.BundleActivator。开发中不关心这个类
com.future.util.report.controller.ExportReportServlet初始的报表导出servlet。只需配置该servlet到你的工程中即可
com.future.util.report.encodingfilter.EncodingFilter字符集过滤filter一般设置为utf-8你可以在web.xml中修改它
com.future.util.report.factory.ExportReportFactory报表导出工厂,根据用户传递过来的报表类型创建能生成对应该类型报表的实例
com.future.util.report.factory.ReportFontFactory 用于pdf word文档的字体生成工厂
com.future.util.report.impl.ExportReportForExcel 此类用于生成Excel格式的报表
com.future.util.report.impl.ExportReportForJPG此类用于生成JPG图片
com.future.util.report.impl.ExportReportForPDF此类生成PDF格式的文档
com.future.util.report.impl.ExportReportForWord此类生成Word文档
com.future.util.report.intf.IExportReport此类内部定义了一枚举用来标识要生成的报表类型
com.future.util.report.tags.ERTagUtil此类用于读取META-INF下的js文件并生成到WebRoot/er_js目录下
com.future.util.report.tags.ExportReportTag报表导出标签
具体参考对应的Javadoc或源码
注:
在lib目录下
com.future.report_1.0.0.201007291116.jar使用eclipse-plugin打成的JAR包
export-report_1.2.jar为eclipse工程导出的jar包
两个jar没有功能上的差异都可以使用,二者各选其一即可
注:由于文档中含大量图片不方便一一上传,如需了解直接下载该组件包,内含详细的文档及源码和例子
点我下载该组件包及源码和例子