报表导出组件,轻松配置,一键将web表格导出为doc、xls、pdf、jpg

作者: nick 分类: java, web 发布时间: 2010-08-06 13:41 ė 64条评论

报表导出组件


开发意图:

在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或源码

点我下载报表导出组件

本文出自 传播、沟通、分享,转载时请注明出处及相应链接。

本文永久链接: https://www.nickdd.cn/?p=935

4条评论

  1. nick 2010年11月18日 03:42 回复

    @dd
    大批量数据导出必然会慢,可以采用分布式的导出办法,数据分段报表导出再文件合并方可解决。

  2. dd 2010年11月17日 04:03 回复

    话说在上家公司有XLS导出的需求
    在大批量数据时用POI,JXL实在是吃不消
    每一个CELL都是一个JAVA 对象
    6W行*几十列,那是相当可观的内存

    要是同时生成几个 就死了
    当时我是参考了网上现成的直接以流形式写成BIFF8格式的XLS
    还发现并改了一下网上那个代码在对位操作时的BUG

    后来遇到的问题是在EXCEL 2007之前都可以正常打开
    但到了EXCEL 2010 打开生成的文件,就直接报错,退出

    这也不怪那个代码,真的是那个BIFF8格式实在太精简了
    头信息都没有

    前几天我发现了FASTEXCEL与BIRD-X

    正在研究呢,可能这就是一条光明大道

发表评论

您的电子邮箱地址不会被公开。

Ɣ回顶部