iReport 4.1 报表制作,子报表,实例解析
开发使用步骤(iReport 4.1.1)
(个人总结,如有问题请留言,另外知道table控件用法的给我留言或者发邮件谢谢。Email:jiazx0107@163.com)
目录
4.1. JasperReport 和iReport的介绍... 2
4.1.2.2. iReport数据库连接的建立 DataSource. 5
4.2.1. iReport基本报表(例:预交费用和押金报表)... 7
4.2.2. iReport子报表SubReport(例:批量打印报表)... 13
4.2.3. iReport table类型的表单(例:押金报表)... 21
4.2.4. Dorado7中iReport的配置... 24
1.1.JasperReport 和iReport的介绍
网上有这个软件的详细介绍。可以搜索下,进一步了解。这里只是简略介绍。
4.1.1. JasperReport 简介
l 一个报表是由一个源代码的文件来描述,这个源文件就是由DTD(jasperreport.dtd, version 0.6.3 is listed in Appendix B)来定义的XML标记。在0.5.3版本中它的源文件扩展名变成了.jrxml; 取代了一般的.xml扩展名。报表的源代码被编译成jasper文件(扩展名是.jasper)。
l jasper文件是一种预报表,严密的说就像是java的类被封状成的对象。Jasper文件通过你的应用程序来加载。它被添加一个数据源的标记从而创建报表,接着它就能以你想要的格式输出(例如:pdf或xls)。
4.1.2. iReport 简介
l iReport也是开源组织sf.net中的一款免费软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。
l 现在的iReport 的最新版本是4.1.3
l iReport运行时需要sun java2 SDK 1.5及以上版本,为了能编译我们的报表文件我们需要完整的安装JDK。
4.1.2.1. iReport几个重要的概念
报表的动态对象变量、参数、字段
l 字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。比如一个ID的所有值。$F{ filedsName }
l 参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提供Where语句的条件值,那么就可以使用参数(Parameters)。$P{ parameterName }
l 变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。$V{ variablesName }
报表结构
报表被垂直分成若干个部分,每一个部分我们叫它“band”。每一个band都有自己的特性,在报表生成的时候有些会打印一次,有些会打印多次。报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。如下图:
l Title:title 段只在整个报表的第一页的最上面部分显示,除了第一页,不管报表中有多少个页面也不会再出现Title band 中的内容。就是报表的标题。
l pageHeader:pageHeader 段中的内容将会在整个报表中的每一个页面中都会出现,显示的位置在页面的上部。如果是报表的第一页,pageHeader 中的内容将显示在Title Band 下面,除了第一页以外的其他所有页面中,pageHeader 中的内容将显示在页面的最上端,即页眉。报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。
l columnHeader:无可非议的这里是放置列的名称,记住不是列数据。
l Detial:报表内容段,在这个Band 中设计报表中需要重复出现的内容,Detail 段中的内容每页都会出现。比如销售记录数据。
l columnFooter:放置列级别的统计计算值或是列的说明。
l pageFooter:显示在所在页面的最下端,即页脚。放置页级别的统计值或是页的说明。
4.1.2.2 iReport数据库连接的建立 DataSource
l 打开iReport软件后点击Report Datasources
l 点击new创建一个新的连接,选择Datasource
l 填写连接名称选择正确的驱动和URL等,点击测试。成功后保存即可。
注:如果Driver为红色则表示没有这个驱动。需要添加相应的jar包。例如没有ORACLE的驱动。添加jar包步骤
IReport中菜单栏中“工具”—“选项”—“classpath”—“AddJar”,添加 Ojdbc.jar文件。
1.1.创建报表(以几个不同类型的报表为例)
利用iReport工具进行报表开发。以实例说明iReport的基本用法和小技巧。
1.1.
1.1.1. iReport基本报表(例:预交费用和押金报表)
1. 打开iReport。文件-à新建-à选择BlankA4-àOpen this template
2. 为这个报表起名,并选择保存位置,点击下一步
3. 完成(新建空白报表完成)
4. 开始设计。
右键点击报表名称,选择 editorquery打开report query 界面设计自己的sql语句(建议先写一条参数固定的SQL),SQL设计好后会出现如下图,右侧的参数先不用管,点击OK按钮保存
5. 回到主界面,可以在左侧Fields节点中看到SQL中查询出来的所有字段
6. 表单的设计。
根据需求设计报表,组件面板中有各种不同的控件(控件此处不介绍使用方法)可以根据自己的需要选择,拖动左侧的Fields中的字段放到需要的位置,如图
l 合计。
在左侧Variables右击添加字段,在属性中设置其属性,Variable Class建议使用java.math.BigDecimal(可以保留小数),Calculation中是几不同的函数,根据需要这里选择sum,在Variable Expression 中选择需要求和的字段,把Variables中的SUM字段拖到表单中需要的位置就可以啦。
l 预览以及参数的设计。
点击Preview预览效果,如果没有问题,开始设计参数,也就是调整SQL语句。
参数:在主界面的Parameters中添加需要的参数,并在属性中配置。然后保存
l 调整SQL语句。
重新打开iReport Query 界面,这时候你可以在右侧看到自己设计的参数,拖动参数替换sql语句中之前固定的参数即可。这样,当调用这个报表的时候,以同样的参数名称的参数传给报表即可(前台如何调用报表以及如何传参在后面Dorado7中iReport的配置中说明)。
点击保存后,查看预览这时候就会提示你输入参数,输入适合的参,报表设计完成
(注:这是一个简单的报表制作。主要显示iReport的基本功能,步骤相对详细,下面的报表主要显示一些技巧,重复的步骤不再截图)
1.1.1. iReport子报表SubReport(例:批量打印报表)
1. 首先设计出一个子报表(在主表中需要显示的部分),同样有参数的设置,设
计步骤如上。以批量打印为例,选择一栋楼,将该楼中查出来的不同的客户信息作为参数传给子表,批量打印客户的缴费信息。子表设计如图:
2. 主表的设计。
在主表的Detail部分(根据情况而定)中加入SubReport控件来添加子报表。拖入时,选择好本地已经存在的report(子表.jrxml原文件)。
3. 点击下一步,到看到子表的参数的时候先不考虑点击下一步,点击完成,这时候你就可以看到下图。子表已经和主表联系了起来。
点击下一步,完成。
4.主表与子表间的参数传递。
如:子表中定义了一个参数house2clientid。把主表中查询出来的值赋给这个参数。在主表中点击添加的SubReport控件查看属性。在parameters中添加参数house2clientid并定义指定是主表中的哪个字段。点击ValueExpression右侧的编辑图标,选择值,确定。这样主表选的那个字段就作为参数传给了子表。
技巧1:如何将子表中的合计传递给主表使用(子表向主表传参)
1. 例:在子表中Variables中添加一个求某个字段的合计的参数sum,属性设置如图:
2. 在主表中同样添加名称一模一样的参数sum ,并且属性的配置一样
3. 在主表中选中添加的SubReport控件查看属性中最后一项Return Values,编辑calculation type中有不同的函数,这里选择Nothing(如果选中sum求和会自动计算每个子表表中合计的合计,也就是说会把传过来的合计累加之前所有子表的合计)。点击确定,这样就可以把在子表中的合计放在主表中显示
技巧2:巧妙利用子报表设计表单
形如:下面的表单,可以看的出来,是有几个不同的表单组合而成,主要是各个表单的行数是不固定的,这就需要做成三个表单或者table组合起来。表单可以利用主子表的关系,例如第一个表单作为子表单放在表单二的columnHeader位置,而表单二Detail放表单二需要查询的内容,同样的把表单二作为子表放在表单三column Header位置,再把表单三作为子表放在主表的column Header位置这样逐级往上走,可以设计出这样的表单。当然各个报表的位置需要计算好。
参数:这个时候只要在SubReport中以主传给子表的顺序设计参数即可,如下图是表单三向表单二传。
以下是各个主子表的设计,需要注意的是他们位置的调整。
1.1.1. iReport table类型的表单(例:押金报表)
在iReport中是有table的控件的,这里写的table类型的表单主要是在不用table控件的情况下,运用iReport制作出table的样式。以押金报表为例。
1.设计报表样式布局,然后选中所有添加边框的列,右击选择Padding and Borders 设计自己需要的格式,例如Line width 选择1 选择实线。就可以啦,当然可以根据需要设计边框上下左右的线的样式。这样就设计好了类型为table的报表。
2. 另外一种设计就是在属性面板中是利用控件的属性来设置。形如图。
3.可以严格分出table_ch、table_th、table_td、table的样式(显示不同的颜色)。选择不同的行,在属性style中修改属性值(默认属性是空)如下图二、三。不过这个属性存在一个问题 ,比如在上面的押金表中个利用这个是属性就不行会提示如图四的提示。是什么原因,暂时没有解决,所以,如果style属性不能使用的话,建议用第一种方式来设计表格。
(注:以上就是利用iReport做报表的用法报表之间参数的传递)
1.1.1. Dorado7中iReport的配置
2.4.1.Dorado7 中如何使用iReport打印报表
u 在服务器端安装swftools-0.9.1.exe转换工具
在war包的bdf.properties中配置bdf.report.pdfToSwf变量值,如:bdf.report.pdfToSwf=D:/Program Files/SWFTools/pdf2swf.exe
报表开发时注意添加一个parameter:CUSTOM_DATASOURCE,值为空,这样框架会自动使用默认的数据源。
u jasper文件通过报表模板维护界面添加;(针对此项目,由于维护界面的问题,添加保存后还需要通过sqldeveloper直接在数据库中设置bdf_reports其datasource_name=WY)
u 在业务界面上通过如下代码打开报表:
view的packages设置为:jasperreports,swfviewer
js报表调用代码:
var report = new bdf.JasperReports();
report.showReport("checkin",{p1:"value1",p2:"value2"});
其中第一个参数对应为报表模板中添加报表的名称。
第二个参数json对象为需要传入报表的参数定义;
2.4.2. Dorado7中iReport 预览问题
预览时中文汉字不能显示。安装xpdf-chinese-simplified语言包
步骤:
2.1.在war包的bdf.properties中配置bdf.report.pdfToSwf变量值,如:
bdf.report.xpdfPath=D:/ProgramFiles/xpdf-chinese-simplifie
2.2.依次选中可能出现汉字的文本框,进行如下设置
fontname:宋体
PDFfont name: STSong-Light;
pdfEncoding=UniGB-UCS2-H
PdfEmbedded:打钩选择(可有可无)
2.4.3. Dorado7中 Grid导出报表
将dorado7中的DataGrid以及AutoForm控件中的数据导出成报表(支持PDF和Excel两种格式),同时可以利用BDF报表模块的swf报表浏览器,在线浏览产生报表文件,供用户在线浏览和下载使用。
u 同样首先安装swftool工具
u view的packages设置为:jasperreports,swfviewer
u 在业务界面上通过如下代码调用即可。
var report = new bdf.Report();
report.showGridReportDialog(this,"gridFeeBill",null,true,
true,true);
· 第一个参数:表示当前的view对象;
· 第二个参数:表示要导出报表的DataGrid的id;
· 第三个参数:导出报表的初始化参数;
· 第四个参数:是否显示在线预览按钮;
· 第五个参数:是否显示直接导出PDF按钮;
· 第六个参数:是否显示直接导出Excel按钮;
u 在执行js之后,可以根据自己的需要设计报表的样式和标题。
(关于dorado7中Grid和Form的报表导出,在BSDN中有详细说明
http://wiki.bsdn.org/pages/viewpage.action?pageId=3964933)
iReport 4.1 报表制作,子报表,实例解析的更多相关文章
- Reporting Services 钻取报表、子报表
一.钻取报表 1.概念 钻取报表是指用户通过单击其他报表中的链接打开的报表.钻取报表通常包含某原始汇总报表中所包含的某项的详细信息. 例如,在此图中,销售额汇总报表列出了销售订单和总额.当用户单击该汇 ...
- ActiveReports 报表控件V12新特性 -- 页面报表新增子报表
ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...
- RDLC 子报表
1.RDLC 设计页面,拖入table或者矩形 2.右击表格或者矩形单元格,插入--子报表 3.输入名称和将此报表用作子报表 名称:显示在设计页面上的,仅作观看作用 将此报表用作子报表:填写目录下的需 ...
- RDLC系列之二 子报表
本文实现简单的子报表 一.效果图
- UniGui中使用Grid++Report报表控件子报表获取数据的方法
Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料 ...
- Dev Express Report 学习总结(三)关于子报表Sub-Report的使用
子报表即在一个Report(主报表)中嵌入另一个Report(子报表),从理论上来讲,任何一个Report都可以作为一个子报表,但在实际使用过程中,只有主报表和子报表构成一对多关系时才会使用子报表.使 ...
- 使用FastReport报表工具生成报表PDF文档
在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...
- 搭建第一个web项目:jasperReports+ireport制作pdf报表
一:jasperReports介绍: 在web应用中,必须面临大量的报表问题,即将数据库中的数据形成报表并进行打印.传统开发只能使用html页面设计报表,效率低且不支持别的格式.所以jasperRep ...
- 机房收费系统(VB.NET)——超具体的报表制作过程
之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件. 刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了. 以下 ...
随机推荐
- 怎样解决Ubuntu发热严重地问题
刚装ubuntu的时候那是相当地热,hot.直接地原因是没有对应地显卡驱动,然后在software update里面找到Nivida地最新驱动,兴高採烈地装上试一试.一点用处没有! 在网上搜了搜,有一 ...
- JAVA责任链设计模式
<JAVA与模式>之责任链模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模 ...
- java 多线程学习(一)
public class ThreadA extends Thread { ; public ThreadA() { super("ThreadID:" + (++threadID ...
- mysql——获取所有table名和table字段名。
获取database所有table名: (参考:http://stackoverflow.com/questions/2780284/how-to-get-all-table-names-from-a ...
- Eclipse 完全 设置UTF-8 环境
当开始一个新的Java项目时,最好将整个环境设置为UTF-8 一般通过如下几步来设置: 1: 设置工作空间的编码格式:Window -> Preferences -> General -& ...
- codeforces 665E Beautiful Subarrays
题目链接 给一个数列, 让你找出异或结果大于等于k的子序列的个数. 因为任意一段序列的异或值都可以用前缀异或和来表示, 所以我们先求出前缀异或和. 我们考虑字典树, 对于每一个前缀sum, 我们先查询 ...
- Art of Unit Test (1) - Breaking Dependency
#!/usr/bin/env python # encoding: utf-8 import unittest """ the simplyest way to test ...
- mini-httpd源码分析-tdate_parse.h
///关联字符串和整数 struct strlong { char* s; long l; }; ///将字符串中的大写字母转换成小写字母 static void pound_case(char* s ...
- Oracle EBS-SQL (SYS-20):职责使用菜单2.sql
select frt.responsibility_name, fr.menu_id, fm.menu_name, fr.request_group_i ...
- RedHat Enterprise Linux 6.3 安装Oracle Database 11g
按照以下文章正确将oracle安装在linux上 http://yiyiboy2010.iteye.com/blog/1670795 http://mirrors.163.com/centos/6.5 ...