报表模块设计<o:p></o:p>
1. 方案<o:p></o:p>
采用JasperReport + iReport的组合进行开发,首先因为两者都是开源软件,其次JasperReport使用简单,输出方式多样,这样在实现客户的需要的时候痛苦会少一些,而iReport是为JasperReports设计的强大的,直观的,易于使用的可视化报表设计器采用纯Java开发。这个工具允许用户可视化编辑包含charts,图片,子报表等的复杂报表。iReport 还集成了JFreeChart图表制作包。允许用户可视化地编辑XML JasperDesign文件。用于打印的数据可以通过多种方式获取包括:JDBC, TableModels, JavaBeans, XML,Hibernate(支持HQL查询语言), CSV等。它支持多种输出格式包括:PDF,RTF,XML,XLS,CSV,HTM等。<o:p></o:p>
1.1JaspeRreport的工作方式<o:p></o:p>
<o:p></o:p>
用户使用定义在一个叫做jasperreports.dtd文件中的标签和属性来设计报表,然后存放在XML文件中。通过这个XML文件,用户定义了整个报表,比如描述了在何处放置这些文本、图片、线条、矩形,以及如何获得数据,如何通过计算来获得总计,等等。 <o:p></o:p>
为了生成真正的报表,XML源文件必须被编译。编译后的文件被称为“jasper file”(因为它是以.jasper为后缀的),这个jasper文件就是被编译的报表代码。
有了jasper文件之后,如果需要生成动态报表,就还需要数据。我们需要通过一些特殊的jasperreport定义的接口来支持传递数据给jasper引擎,比如JRDataSource。“一个数据源 + 一个jasper文件 = 一个打印资源”。这个打印资源可以被输出成多种格式,比如:PDF、HTML、XML、XLS、CSV等等。通过使用一些实现了明确输出的特殊的类来完成输出。
1.2 用ireport设计模板
由于在此模块中,模板是通过javaBean做数据源,因此要在ireport中进行相关的配置,在Opitons中选择classpath,把要添加的Bean的类目录添加到classpath中(例如:F:\eclipse<st1:chsdate w:st="on" isrocdate="False" year="1899" day="30" islunardate="False" month="12">3.1.2</st1:chsdate>-with-plugin\workspace\Report\bin ,然后在关联数据源的时候,选择edit中的report query,再选择JavaBean DataSource,把相关的bean的class添加进去。选择Read attributes.然后就可以进行关联了,还又一个问题就是在输出的时候中文显示不出来,这时候就要下载一个iTextAsian.jar文件。下载地址:http://sourceforge.net/project/downloading.php?groupname=itext&filename=iTextAsian.jar&use_mirror=jaist<o:p></o:p>
2. 业务设计<o:p></o:p>
2.1日报 <o:p></o:p>
根据所选站地址,选择所要生成报表的类型(日报),选择的时间(某年某月某日),生成一张日报表,显示当日该站所产生的最大电流值及出现的时间,当日的最高电压值和最低电压值及出现时间。
2.2月报
根据所选站地址,选择所要生成报表的类型(月报),选择的时间(某年某月),生成一张月报表,显示当月该站所产生的最大电流值及出现时间,当月产生的最高电压值和最低电压值及出现时间。<o:p></o:p>
3. 数据模型
定义一个基本存储数据结构ReportDateBean中,建立两个Bean工厂,在里面定义一个Bean数组,把需要从数据库中存取的数据通过Bean构造函数存放在一个ReportDateBean类型的数组中,通过调用getBeanCollection()方法从此数组中获取数据,通过JRBeanArrayDataSource构造函数封装成数据源,提供给报表模型中定义的相关参数,实现模型与实际数据的关联。<o:p></o:p>
4. 实现设计<o:p></o:p>
1) 界面
Ø 站所选择<o:p></o:p>
由于是在三级图中加载此模块,所以设置了默认站地址,操作时,只需点击下拉按钮,就会弹出所有的站地址,选中地址名称点击,站名文本框中将显示此地址。<o:p></o:p>
<o:p> </o:p>
Ø 报表类型选择(日报、月报)<o:p></o:p>
通过点击单选按钮实现选择日月报表的功能,由于日报表操作的频率应该更高,所以默认情况下设置成日报为被选框,当需要进行月报表查询时,只需点击月报前的圆框。<o:p></o:p>
<o:p> </o:p>
Ø 时间选择<o:p></o:p>
当要生成日报时点击“设置日报时间”的按钮,会弹出图3显示的日期选择对话框。在对话框中选择年月日。当生成月报表时,点击“设置月报时间”的按钮,生成同样的对话框,其他操作同日报一样。<o:p></o:p>
<o:p> </o:p>
Ø 生成报表<o:p></o:p>
点击“生成报表”按钮将得到最终的报表。<o:p></o:p>
2).业务层
Ø 对界面统一接口<o:p></o:p>
定义接口ReportGenerator,接口中定义方法generateDayReport(int _stationAddr, String _dateStr, String type);分别传参数stationAddr---站地址,dateStr---时间字符串,stationName---站名,还定义了方法generateMonthReport(…),参数相同;<o:p></o:p>
<o:p> </o:p>
Ø 接口实现<o:p></o:p>
定义类ReportGeneratorImpl实现ReportGenerator中分别实现了生成日报表函数generateDayReport,通过DayReport构造函数,生成对象调用DayReport中的generaterReport()函数,产生报表;同理生成月报函数generateMonthReport。<o:p></o:p>
<o:p> </o:p>
Ø 报表模版类<o:p></o:p>
定义类Report,作为DayReport类和MonthReport类的父类,实现它们公共方法,实现编译.jrxml为.jasper文件的函数compJrxml();实现装载.jasper文件生成.jrprint文件的函数prodJrprint(String _stationName, int _stationAddr,String _dateStr);还实现打印.jrprint文件为.pdf文件的函数printReport(String _dateStr)。由于在生成日月报表的时候,三个函数中的一些参数不同,所以针对参数定义函数,在子类中实现多态,如获取关联参数,获取文件名,获取bean列表.<o:p></o:p>
<o:p> </o:p>
Ø 扩展日报类<o:p></o:p>
从Report类中派生而出,就getFileName(),getBeanList(int _stationAddr, String _dateStr),getParamMap(String _stationName, String _dateStr)三个方法进行重载,分别从配置文件中获取日报表文件路径及文件名,从DayReportBeanFactory中获取BeanList,以及参数关联时赋予PaperName为“日报” 。<o:p></o:p>
<o:p></o:p>
Ø 日报数据处理类<o:p></o:p>
定义了三个函数,getMaxVoltage(),getMinVoltage(),getMaxCurrent(),分别通过连接数据库,从数据库中取出类型(电压/电流),最大/最小值,以及发生的时间,把他们封装到bean对象中,存储到一个list列表中,通过getBeanList()接口与外面进行交互。<o:p></o:p>
<o:p> </o:p>
Ø 扩展月报类<o:p></o:p>
从Report类中派生而出,就getFileName(),getBeanList(int _stationAddr, String _dateStr),getParamMap(String _stationName, String _dateStr)三个方法进行重载,分别从配置文件中获取与报表文件路径及文件名,从MonthReportBeanFactory中获取BeanList<span style="FONT-SIZE: 12pt; COLOR: black; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerni
分享到:
相关推荐
### JasperReport+iReport 报表开发手册核心知识点详解 #### 一、JasperReport与iReport概述 **JasperReport** 是一款强大的、灵活的报表生成工具,它能够展示丰富的页面内容,并支持将这些内容转换为PDF、HTML或...
在"使用JasperReport+iReport进行WEB开发"的实践中,首先需要安装并配置iReport,下载并解压后,可以通过它来设计报表模板。模板设计完成后,将其保存为.jrxml文件,这是JasperReport的XML格式,包含了报表的所有...
在给定的“report”压缩包文件中,可能包含了使用JasperReport和IReport开发的报表模板文件(.jrxml)以及相关的Java源代码。这些源代码通常会展示如何在Java应用中加载报表模板,连接数据源,填充数据并导出报表。...
它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。JasperReports 完全是由 Java 写成,可以应用于 Java 的应用 程序,包括 J2EE,Web 应用程序中生成动态内容,它主要目的是辅助...
JasperReport和iReport是Java世界中...总的来说,JasperReport和iReport提供了强大的报表设计和Web集成能力,是开发企业级报表系统的重要工具。通过熟练掌握这些知识点,开发者可以创建出符合业务需求的高质量报表。
### jasperreport+ireport开发java报表入门级教程(完整版) #### 一、简介:什么是iReport? iReport系统是一种在线系统,用于报告工作场所安全与健康(WSHA)事件报告条例下的事故、危险事件及职业病。雇主、占用...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
本手册将详细探讨如何使用JasperReport和iReport开发报表,以及它们之间的关系和各自的特点。 首先,JasperReport是一个开源的Java报表库,支持多种数据源和输出格式,比如PDF、HTML、CSV、XML等。它允许开发者通过...
7. **jasperreport+ireport开发java报表入门级教程.pdf**:专门针对Java开发者的入门教程,详细解释如何使用JasperReport和IReport构建报表。 8. **jasperReport.pdf**:可能是一个JasperReport的官方文档或者第三方...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
Struts2.0+JasperReport+IReport+Oracle 报表开发整个项目打包上传,用MyEclipse导入即可调试使用含报表文件、数据库表结构及测试数据,项目中解决了PDF中文
### JasperReport与iReport复合报表深度解析 #### 引言 在报表开发领域,JasperReport因其强大的功能和灵活性而受到广泛青睐。结合iReport工具,开发者能够更加便捷地设计和生成复杂报表。本文旨在深入解析...
本教程“jasperreport ireport开发java报表入门级教程(完整版)”将引导初学者逐步掌握这些概念和操作,通过实际项目练习,加深理解,提升报表开发能力。教程内容可能涵盖报表设计基础、数据绑定、报表生成、Java应用...
### JasperReport+iReport 报表工具详细开发手册 #### 1. 简介 JasperReport是一款功能强大的报表引擎,适用于Java应用环境。它能够根据预设的模板生成多种格式的报表,如PDF、HTML、Excel等。iReport则是...
JasperReport和iReport是Java平台下用于生成报表的工具,它们在企业应用开发中扮演着重要的角色,尤其是在报表的生成、展现和打印方面。JasperReport是一种报表引擎,它能够解析.jasper文件并将其呈现到用户界面中,...
### JasperReport+iReport 报表学习资料知识点梳理 #### 一、JasperReport与iReport简介 ...通过以上知识点的学习和实践,用户可以全面掌握JasperReport+iReport的使用方法,从而高效地开发出满足业务需求的报表系统。
总之,使用Struts2、JasperReport和iReport开发报表时,要关注数据源配置、中文支持、Struts2与报表之间的交互以及子报表的参数传递。遇到问题时,多参考官方文档、社区资源,结合错误信息进行排查,往往能找到合适...
**jasperReport与iReport简介** jasperReport是一款开源的Java报表工具,它允许开发者创建复杂的打印报告和交互式PDF、HTML、XLS...通过熟练掌握jasperReport和iReport,可以极大地提高开发效率,提升应用的用户体验。