基于Jasperreport技术的动态报表的研究及应用
以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
1.2 报表工具的发展现状
在很多实际的项目里,报表都是十分重要的组成部分,例如把查询结果以报表形式呈现出来。这里所提到的报表可不是简单的二维表,而是拥有复杂表头的、多维的、可以在运行期从数据库中自动读取数据、可自动分页、拥有丰富页面元素(图片,超链接等)、支持分组和交叉表、支持打印、最好还能导出到Excel或Word……但是显而易见,报表功能越强大、提供的服务越丰富,其复杂度也就越高,所以仅靠手工方式生成报表是不能满足需要的。
当前市场上常用的报表工具有很多,人们了解最多的还是EXCEL,它是MS Office 套装中的一个组件,在一些简单的报表系统中,常常利用它提供的接口进行二次开发,但它不太适合制作Web 报表。在这方面,润乾、杰表、Crystal Report、Style Report 等Web 报表工具支持得很好。其中,润乾、Style Report 支持跨平台操作,前者还提供了强大的Java 开发接口。Crystal Report 在.NET 方面提供了比较完善的开发接口,但是在Java平台上,多数的实现都是要收费的,而且其Eclipse插件的资源消耗十分惊人。另外,还出现了一种基于控件的低端Web 报表产品如数巨、明宇,但是它们在开发Web 报表方面有一定缺陷。
目前J2EE技术在国内的B/S应用开发中占主导地位,对JAVA的支持也是报表工具的一个重要考查指标。从这个意义上讲,报表工具可以分为纯JAVA 和非纯JAVA 两种 (所有支持B/S应用的报表工具都能支持JAVA)。 [来源:http://think58.com]
相比之下,纯JAVA产品具有明显的优势。产品能够与J2EE应用完全无缝结合以达到最高的运行效率、安装部署很轻松简单(其机制与应用本身完全一致);同时还可充分利用J2EE应用服务器强大的集群平衡负载及共享管理的能力,适合支持用户数众多的大型应用系统;由于JAVA的跨平台能力,还能让整个应用系统轻松地从低端体系向高端体系迁移,系统容量变大时只要更换硬件、操作系统及数据库等系统部件而无需或很少需要重写软件。
而非纯JAVA产品则相反,经常只能在Windows下运行(个别国外产品宣称支持UNIX但部署极为复杂)、同样的应用在不同规模下可能需要两套解决方案,或在大型应用中除了UNIX主服务器外还必须专门部署Windows作为报表服务器,显得体系结构非常古怪;产品也不能和J2EE的应用无缝结合、沟通需要沟通额外的网络协议导致运行效率较低,而且由于不能享受应用服务器的集群机制(国外产品常常有自己的集群机制但没有J2EE应用服务器专业),难以支持多用户的大型应用[1]。
JasperReport是JasperSoft公司的一款开源的报表解决方案。通过JasperReport,用户就可以方便的定制、设计、生成项目所需要的各种报表。它是一种功能非常强大的报表工具,是纯Java编写的,与以上报表工具相比较,有其自身的特点和优势:
(1)开放源代码。可以更灵活地定制此报表工具实现特定功能。
(2)功能强大。无论是复杂样式的固定报表,还是子报表、交叉报表,各种线段的运用,图形的嵌入,数据源连接的多样性,数据预览和模板编译,无不体现其强大的功能,而且其开源的特性使它的功能不断得到扩展。通过与iReport 结合,脱离了编写XML的复杂过程,很好地实现了报表的设计。
(3)类库基于Java 技术,更好地适用于B/S 架构的Web 系统,而且能输出打印机及生成XLS、RTF、HTML、PDF、XML 等多种格式的报表文件[2]。
JasperReport的数据源的准备
数据源的准备是报表系统中最重要的一部分,为了要为报表装填数据,我们需要为报表引擎提供所需的数据,或者至少告诉它怎样去获取数据。通常情况下,我们一般有两种选择,一是选择数据库连结的数据源,JasperReport通常需要接受一个JRDataSource对象作为报表的数据源,这个类与报表的数据源有关。只要能够恰当地实现它的一些接口,用户就可以在报表中使用各种数据源。 报表装填的时候, 由报表引擎负责对数据进行解释和获取。当报表装填的时候,报表引擎都会在后台生成提供一个该接口的实例。同时作为更为强大的功能,JasperReport能直接用JDBC从关系数据库中获取数据。通过这种方式,我们就可以直接在报表设计中写入SQL查询语句,让报表在运行期自动获取所需的数据来装填报表而不需要做额外的工作。在报表中,可以使用元素来引入查询。如果这个元素存在,则出现在报表参数声明之后,报表field之前[6]。但这样一来,就必然会损失一些程序的灵活性,比如查询语句或数据库连接需要修改的时候我们就不得不重新填入相应的内容并编译报表。所以在工作中我们可以采用另外一种方式,即用JavaBean的集合(Collection或Array)来充当数据源。
例如,本系统的数据库中的表“cfg_static_name”中的属性在我填入sql语句之后自动显示在了下面。对于简单的报表来说,这样做确实很方便。但是如果SQL查询或数据库连接有变动的话,就需要重新填入SQL语句或数据库连接的信息,并编译报表设计,这显然是在损失了灵活性之后所获得的方便。此时第二种方式要优于第一种。
2.2 iReport介绍
说起JasperReport不得不先介绍一下iReport。 iReport 也是开源组织sf.net 中的一款免费软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。
2.2.1 iReport简介
进行模板设计时,如果手动书写XML 文件,既可能出现书写错误,而且看上去也不直观。繁琐的XML标记和功能API在提供强大的动态及可扩展开发的同时也带来了超高的复杂性,在没有免费文档的情况下,手工编写报表设计所需的XML文件是极其不明智的。不过正如JBuider(或其他可视化开发工具)编写SwingGUI时一样,我们可以采用iReport进行可视化的的损失简直可以忽略不计了。当然,如果确实需要、且看到纷繁复杂的XML报表模板文件时你不会晕倒的话,自己动手确实可以获得所需的灵活性。
和JasperReport一样,iReport也是Sourceforg上的开源项目。它的出现,主要是为了降低JasperReport的使用难度,为用户提供可视化的报表设计工具。它采用纯Java 开发, 图形化编辑XML 文件,支持PDF, RTF, XML,XLS,,CSV, HTM 等多种文件格式输出,同时支持子报表、交叉报表等复杂报表的设计,具有数据预览功能,并集成了JFreeChart 图表制作库,可在表中嵌入图形。报表的设计分为格式部分和数据部分,iReport 将这两部分进行了分离[7]。最新的版本对于中文也有了很好的支持, 更易于中国用户使用,目前iReport的最新版本号为2.0.5。
在很多实际的项目里,报表都是十分重要的组成部分,例如把查询结果以报表形式呈现出来。这里所提到的报表可不是简单的二维表,而是拥有复杂表头的、多维的、可以在运行期从数据库中自动读取数据、可自动分页、拥有丰富页面元素(图片,超链接等)、支持分组和交叉表、支持打印、最好还能导出到Excel或Word……但是显而易见,报表功能越强大、提供的服务越丰富,其复杂度也就越高,所以仅靠手工方式生成报表是不能满足需要的。
当前市场上常用的报表工具有很多,人们了解最多的还是EXCEL,它是MS Office 套装中的一个组件,在一些简单的报表系统中,常常利用它提供的接口进行二次开发,但它不太适合制作Web 报表。在这方面,润乾、杰表、Crystal Report、Style Report 等Web 报表工具支持得很好。其中,润乾、Style Report 支持跨平台操作,前者还提供了强大的Java 开发接口。Crystal Report 在.NET 方面提供了比较完善的开发接口,但是在Java平台上,多数的实现都是要收费的,而且其Eclipse插件的资源消耗十分惊人。另外,还出现了一种基于控件的低端Web 报表产品如数巨、明宇,但是它们在开发Web 报表方面有一定缺陷。
目前J2EE技术在国内的B/S应用开发中占主导地位,对JAVA的支持也是报表工具的一个重要考查指标。从这个意义上讲,报表工具可以分为纯JAVA 和非纯JAVA 两种 (所有支持B/S应用的报表工具都能支持JAVA)。 [来源:http://think58.com]
相比之下,纯JAVA产品具有明显的优势。产品能够与J2EE应用完全无缝结合以达到最高的运行效率、安装部署很轻松简单(其机制与应用本身完全一致);同时还可充分利用J2EE应用服务器强大的集群平衡负载及共享管理的能力,适合支持用户数众多的大型应用系统;由于JAVA的跨平台能力,还能让整个应用系统轻松地从低端体系向高端体系迁移,系统容量变大时只要更换硬件、操作系统及数据库等系统部件而无需或很少需要重写软件。
而非纯JAVA产品则相反,经常只能在Windows下运行(个别国外产品宣称支持UNIX但部署极为复杂)、同样的应用在不同规模下可能需要两套解决方案,或在大型应用中除了UNIX主服务器外还必须专门部署Windows作为报表服务器,显得体系结构非常古怪;产品也不能和J2EE的应用无缝结合、沟通需要沟通额外的网络协议导致运行效率较低,而且由于不能享受应用服务器的集群机制(国外产品常常有自己的集群机制但没有J2EE应用服务器专业),难以支持多用户的大型应用[1]。
JasperReport是JasperSoft公司的一款开源的报表解决方案。通过JasperReport,用户就可以方便的定制、设计、生成项目所需要的各种报表。它是一种功能非常强大的报表工具,是纯Java编写的,与以上报表工具相比较,有其自身的特点和优势:
think58 [版权所有:http://think58.com]
(1)开放源代码。可以更灵活地定制此报表工具实现特定功能。
(2)功能强大。无论是复杂样式的固定报表,还是子报表、交叉报表,各种线段的运用,图形的嵌入,数据源连接的多样性,数据预览和模板编译,无不体现其强大的功能,而且其开源的特性使它的功能不断得到扩展。通过与iReport 结合,脱离了编写XML的复杂过程,很好地实现了报表的设计。
(3)类库基于Java 技术,更好地适用于B/S 架构的Web 系统,而且能输出打印机及生成XLS、RTF、HTML、PDF、XML 等多种格式的报表文件[2]。
JasperReport的数据源的准备
数据源的准备是报表系统中最重要的一部分,为了要为报表装填数据,我们需要为报表引擎提供所需的数据,或者至少告诉它怎样去获取数据。通常情况下,我们一般有两种选择,一是选择数据库连结的数据源,JasperReport通常需要接受一个JRDataSource对象作为报表的数据源,这个类与报表的数据源有关。只要能够恰当地实现它的一些接口,用户就可以在报表中使用各种数据源。 报表装填的时候, 由报表引擎负责对数据进行解释和获取。当报表装填的时候,报表引擎都会在后台生成提供一个该接口的实例。同时作为更为强大的功能,JasperReport能直接用JDBC从关系数据库中获取数据。通过这种方式,我们就可以直接在报表设计中写入SQL查询语句,让报表在运行期自动获取所需的数据来装填报表而不需要做额外的工作。在报表中,可以使用元素来引入查询。如果这个元素存在,则出现在报表参数声明之后,报表field之前[6]。但这样一来,就必然会损失一些程序的灵活性,比如查询语句或数据库连接需要修改的时候我们就不得不重新填入相应的内容并编译报表。所以在工作中我们可以采用另外一种方式,即用JavaBean的集合(Collection或Array)来充当数据源。
本文来自think58 [资料来源:http://www.THINK58.com]
例如,本系统的数据库中的表“cfg_static_name”中的属性在我填入sql语句之后自动显示在了下面。对于简单的报表来说,这样做确实很方便。但是如果SQL查询或数据库连接有变动的话,就需要重新填入SQL语句或数据库连接的信息,并编译报表设计,这显然是在损失了灵活性之后所获得的方便。此时第二种方式要优于第一种。
2.2 iReport介绍
说起JasperReport不得不先介绍一下iReport。 iReport 也是开源组织sf.net 中的一款免费软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。
2.2.1 iReport简介
进行模板设计时,如果手动书写XML 文件,既可能出现书写错误,而且看上去也不直观。繁琐的XML标记和功能API在提供强大的动态及可扩展开发的同时也带来了超高的复杂性,在没有免费文档的情况下,手工编写报表设计所需的XML文件是极其不明智的。不过正如JBuider(或其他可视化开发工具)编写SwingGUI时一样,我们可以采用iReport进行可视化的的损失简直可以忽略不计了。当然,如果确实需要、且看到纷繁复杂的XML报表模板文件时你不会晕倒的话,自己动手确实可以获得所需的灵活性。
copyright think58
[版权所有:http://think58.com]
和JasperReport一样,iReport也是Sourceforg上的开源项目。它的出现,主要是为了降低JasperReport的使用难度,为用户提供可视化的报表设计工具。它采用纯Java 开发, 图形化编辑XML 文件,支持PDF, RTF, XML,XLS,,CSV, HTM 等多种文件格式输出,同时支持子报表、交叉报表等复杂报表的设计,具有数据预览功能,并集成了JFreeChart 图表制作库,可在表中嵌入图形。报表的设计分为格式部分和数据部分,iReport 将这两部分进行了分离[7]。最新的版本对于中文也有了很好的支持, 更易于中国用户使用,目前iReport的最新版本号为2.0.5。