Java报表功能的三种实现方法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1概述
面对管理系统中复杂的数据,报表作为数据管理工具,帮助用户快速掌握原始数据中的基本关系,直观的让用户感受到数据的变化,使用户对事务最新的形势状况能够在第一时间掌握并做出正确的决策判断。

传统处理报表的方式是使用Excel,Word等编辑软件进行人为的数据统计。

这种人工统计数据、填写报表的方式不仅效率低下,还容易出错。

为了提高单位工作人员协同办公效率,减少传统报表在生成和使用时所带来的不足之处。

越来越多的单位选择使用信息化办公,即只向系统数据库录入一次数据,再根据数据库中已有数据集进行数据处理、报表打印。

2浏览器直接生成报表
利用浏览器自带的打印功能实现报表打印,无疑是所有实现打印报表功能方式中最直接的。

客户端不用下载其他额外的插件,不需要多余的环境配置,便可以很方便的通过浏览器直接实现报表功能打印。

利用浏览器直接生成报表主要有以下4个步骤:
步骤一:建立数据库连接。

DBUil db=new DBUtil();
步骤二:用JavaBean定义相应的数据操作语言,获取数据集。

public List getAlInfomationO{
List infomations=null://初始化报表数据集合
infomationsSuing sql="select*from infomations"; //生成数据库查询语句
infomations=db.getList(sql,null);//将数据集放入//集合infomations中retum infomations;}
步骤三:根据制作报表页面需要的样式。

<IDOCTYPE htm>
<html>//报表页面设计
<head>
<meta http equiv="Content-Iype"><title></tite>
<head>//设置网页标题
<body><body>//设计网页内容,例如:表格,div流//对象
</html>
步骤四:通过Jsp获取数据库中报表参数集并向前端传递。

<%ArayList infomations=(ArayListinfomations getAlInfomationO;//获取数据集
for(Object oinfomations){//遍历数据集,显示数据
Map m=(HashMap);%>
<%=m.get"name");%>
<%=}%>
这种实现报表打印功能有很大的局限性:一方面是使用浏览器打印报表需要对数据集的每个操作功能都写方法代码来进行获取,一旦所做的项目涉及到对多个相关数据源信息的操作,系统对数据库数据的操纵方法的实现代码就很繁复;另一方面是使用浏览器打印报表的控制不是很规范统一,例如:使用window.print()实现作者简介:邱泸谊(1999-),女,本科;黄俊杰(1998-),男,本科。

收稿日期:2018-11-05
Java报表功能的三种实现方法
邱泸谊,黄俊杰
(西华大学计算机技术与软件工程学院,成都610039)
摘要:在现代信息化管理系统中,报表担任着非常重要的数据分析和呈现工具的角色。

可读性强的
报表系统可以把有效的信息转化为直观的图形化界面,方便使用者阅读数据信息,并为决策者提供精
准高效的决策依据,从而更好的进行企业市场需求分析和战略部署。

随着web技术的发展,B/S架构模
式的信息管理系统越来越普遍,它的集成通用,灵活,低成本的报表生成方式是具有实际运用价值的。

主要介绍3种主流的报表功能的实现方案(浏览器、组件、拥有设计器的第三方软件)及其各自的优缺点,希望为读者在选择集成报表时提供一定的参考依据。

关键词:Java语言;Web 技术;报表打印
107
2019.02
2019.02
报表功能打印,页头页尾的格式会有页脚页眉干扰,不能准确的进行页面对齐及打印文字。

并且它只能打印网页同时它还不具有迁移性,一旦需要新的报表页面,Web 网页程序将面临大幅度的修改。

还应该注意的是:利用浏览器生成报表在不下载其他组件的前提下,只能支持HTML 打印。

3组件生成报表
为了能够使系统能够生成Word、PDF 这些可以通
过系统输出设备进行规范输出,一些小组件应运而生了。

这些报表组件由于只是封装了制作报表格式的属性和方法,例如:生成PDF/word 格式,生成统计图等的方法属性,没有携带独立的设计器,所以它们的内存都比较小,大部分组件都比较容易安装部署。

这一类组件通常是由程序进行控制定义并使用,对于小型系统的报表设计过程,利用组件生成报表是最有效方便快捷的。

主要以iText 为例,介绍了如何利用组件自身定义的属性和方法实现打印报表功能。

iText 是开放源码站点sourceforge 所开发的生成
PDF 报表的组件,它是用程序语言Java 编写的方法集成体,因此它可以适用于大多数的Java 开发环境。


户只需要下载IText.jar 包后,将文件导入程序编辑器的库中,最后直接调用组件中的方法,即可制作报表。

通常使用IText 组件生成PDF 报表主要有以下5个步骤:
步骤一:建立数据库连接。

步骤二:用JavaBean 定义相应的数据操作语言,获取数据集。

步骤三:选取合适的构造函数定义docucom 对象,并初始化文件流对象。

Documne nt do cucom =new Doament (Rectangle size,int leftint right,int topint bot);.
//定义页面的大小以及页面内边距
docucom.getInstance (docucom,new FileOut⁃Steam(report pdf));
//将文档内容对象docucom 存储在指定的文件
//流对象
docucom.openO;//打开文件流对象
docucom addTitle("A dd text reoportitle!");//添加//文档标题
docucom addSubject("Add text theme!");//添加//文档主题
docucom.close()://关闭文档内容对象
步骤四:设计报表页面需要的样式。

步骤五:通过在服务器端使用Jsp 生成PDF 报表,PC 端通过超链接或下载得到生成的报表。

与浏览器直接实现报表功能的打印相比,虽然还是
需要连接数据库传递数据信息,但是通过iText 组件实现报表功能的打印解决了一些直接利用浏览器直接实现报表打印功能无法解决的问题:打印的内容取决于实时的数据库信息;即使页面过多,PDF 文档也能在无人参与的批处理模式下自动创建。

iText 作为一个jar 包,封装了一些对文档内容制作的方法,功能比较全面,也减少了制作过程中一些格式的问题,能够满足信息管理系统实现报表功能打印的一般需求,使报表内容变得更加容易调整。

iText 组件的缺陷:由于iText 并不是中国公司开发
的,因此并不支持中文字体的设置,如果要生成中文输出的报表,还需要多下载一个ITextAsian.jar 的文件,并通过相应代码定义来实现中文的设置。

这种问题极大地影响了iText 在中国报表中的使用。

另一方面iText 组件在制作表格和图片中,都需要大量的代码定义表格和图片的格式。

而在大型信息管理系统的制作过程中,会涉及到大量报表设计,并且这些报表样式不尽相同,在这个时候利用iText 组件制作报表在代码量上就显得冗余了。

4第三方工具生成报表
随着B/S 框架模式的普及和用户报表制作需求的不
断上升,一些方便快捷报表软件大量涌现。

这些报表软件在封装了大量的报表模型和制作报表样式的操作方法的同时,还具有独立的设计器,可以通过设计器直接绘制报表模板,系统再由设计的报表样式自动生成代码。

由于它们对B/S 结构的友好度极高,使得它们的出现极大的减少了开发人员在系统研发时的工作量。

主要以Crystal Reports 和Fine Report 为例,介绍了如何利用第三方软件实现打印报表功能。

Crystal Reports 报表开发工具是由SAP 公司开发的,
它的优势是实现了与绝大多数主流开发工具的集成和接口。

Crystal Reports 的安装是在Visual Studio?2013的电脑环境配置下下载Crystal Reports,version for Visual Stu⁃
dio 2013.aspx,修改环境变量,进行单独部署,值得注意的是在应用程序更新的时候,由于服务器方案是单独安装的,报表文件是单独部署的,所以无法同时更新。

108
通常使用Crystal Reports第三方工具生成PDF报表主要有以下几个步骤:
步骤一:在Visual Studio?2013项目下创建rpt文件。

步骤二:连接数据库,选择push模式和pull模式从数据库中获取相应数据集。

步骤三:在Crystal Reports的设计器界面中进行报表样式的设计。

步骤四:对控件进行功能绑定,例如:某些统计运算,对数据集的操作(查询,删除,修改,增加)。

由于第三方Crystal Reports工具设计器设计采用的是控件拖拽式绘制报表,因此利用它进行报表设计并不需要大量的代码。

在大型企业单位的信息系统设计中,报表样式总是多样的,这就意味着需要大量的报表模板。

利用第三方Crystal Reports工具生成报表,使得报表的生成更加方便简洁,大大减轻了程序员的工作量。

但是同样是因为Crystal Reports的设计器设计采用的是控件拖拽式制作报表,在设计复杂报表的表头时会导致控件排列不整齐等问题的产生。

和iText组件相同,第三方Crystal Reports工具是由国外公司开发的,不能很好的满足国内报表的复杂样式。

Fine Report报表软件是帆软公司开发的一款应用Java程序设计语言编写的中国式报表控件。

它的独立部署方式也十分的简便灵活,将FineReport应用集成到新的Web工程把FineReport_8.0安装目录下的WebReport 文件拷贝到%/Tocmcat_HOME%webapps/下。

通常使用Fine Report软件生成PDF报表主要有以下3个步骤:
步骤一:连接数据库,添加报表需要展示的数据集。

步骤二:设计报表模板,在空白的表格主设计界面,将需要的数据源从左侧的数据源面板中拖曳到单元格中,并定义报表在展示的数据方向,设置数据的类型,和单元格之间的关系。

步骤三:插入控件,并绑定数据集,保存报表模板。

与Crystal Reports设计器采用控件拖拽式绘制报表的方式大相径庭的是FineReport采用的是类Excel的Java报表设计器,格线对齐的编辑方式,这样的设计极大地满足了中国式报表复杂的报表头样式设计。

它的控件也因为绑定了数据集,不会因为拖动而导致程序的失效。

由于软件本身就是参考Excel进行设计的,所以它天然的支持导入导出Excel,可以在导入Excel后,直
接利用已经编辑好的报表样式绑定数据,完成报表制
作,这为报表的设计减轻了工作量。

Fine Report还支持
从不同数据库提取数据展示。

并且具有回填功能,这种
功能对中国报表的制作有极大的友好度。

但是Fine Re⁃port对于报表管理权限、用户、门户的运用有很大的局限性。

它只提供CS的Java报表设计器,不能做到BS
的报表设计。

除此之外,Fine Report报表目前不能要解
析xml格式数据,需要使用Java程序数据源。

5结语
随着信息时代的发展,运用信息管理系统办公会成
为越来越多工作单位青睐的对象,而报表的制作也会越
来越复杂。

主要介绍了3种实现报表功能打印的方案及
优缺点。

第一种是直接使用浏览器生成报表适用于只用
在页面上显示只需要HTML打印的小型项目,第二种是
利用组件动态对象生成报表适用于报表样式制作较少的
信息管理系统;第三种是利用第三方控件生成报表适用
于报表样式繁多的大型信息管理系统。

参考文献
[1]丁振凡,王小明,吴小元,邓建明,周斌.利用i⁃Text包实现Java报表打印[J].微型机与应用, 2012,31(18):84-86.
[2]徐志军.Java报表打印的若干问题[J].湛江师范
学院学报,2002,(06):84-87.
[3]王丽萍,秦永平.基于iText的PDF报表设计[J].
电脑知识与技术(学术交流),2007,(08):492-493+574.
[4]刘红军,赵海霞.用Servlet实现Pdf报表的打印和预
览[J].电脑编程技巧与维护,2006,(01):24-26.
[5]王晓彬报表的几种实现方式的探讨[J].
电脑知识与技术(学术交流),2007,(21):640-644+652.
[6]邢诒俊,陈亚楠,廖庭悟,陈富节.Fine Report报
表工具的使用与集成[J].华南金融电脑,2009, 17(09):86-87.
[7]侯金波,王德群.iText API在计量管理信息系统中
的应用[J].中国计量,2008,(08):
97-99.
109
2019.02。

相关文档
最新文档