开发使用步骤(iReport 4.1.1)

(个人总结,如有问题请留言,另外知道table控件用法的给我留言或者发邮件谢谢。Email:jiazx0107@163.com

目录

1.      开发使用步骤(iReport4.1)... 2

4.1.       JasperReport 和iReport的介绍... 2

4.1.1.        JasperReport 简介... 3

4.1.2.        iReport 简介... 3

4.1.2.1.     iReport几个重要的概念... 3

4.1.2.2.     iReport数据库连接的建立 DataSource. 5

4.2.       创建报表(以几个不同类型的报表为例)... 7

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 报表制作,子报表,实例解析的更多相关文章

  1. Reporting Services 钻取报表、子报表

    一.钻取报表 1.概念 钻取报表是指用户通过单击其他报表中的链接打开的报表.钻取报表通常包含某原始汇总报表中所包含的某项的详细信息. 例如,在此图中,销售额汇总报表列出了销售订单和总额.当用户单击该汇 ...

  2. ActiveReports 报表控件V12新特性 -- 页面报表新增子报表

    ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...

  3. RDLC 子报表

    1.RDLC 设计页面,拖入table或者矩形 2.右击表格或者矩形单元格,插入--子报表 3.输入名称和将此报表用作子报表 名称:显示在设计页面上的,仅作观看作用 将此报表用作子报表:填写目录下的需 ...

  4. RDLC系列之二 子报表

    本文实现简单的子报表 一.效果图

  5. UniGui中使用Grid++Report报表控件子报表获取数据的方法

    Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料 ...

  6. Dev Express Report 学习总结(三)关于子报表Sub-Report的使用

    子报表即在一个Report(主报表)中嵌入另一个Report(子报表),从理论上来讲,任何一个Report都可以作为一个子报表,但在实际使用过程中,只有主报表和子报表构成一对多关系时才会使用子报表.使 ...

  7. 搭建第一个web项目:jasperReports+ireport制作pdf报表

    一:jasperReports介绍: 在web应用中,必须面临大量的报表问题,即将数据库中的数据形成报表并进行打印.传统开发只能使用html页面设计报表,效率低且不支持别的格式.所以jasperRep ...

  8. 机房收费系统(VB.NET)——超具体的报表制作过程

    之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件. 刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了. 以下 ...

  9. 推荐6款常用的Java开源报表制作工具

    JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表.JasperReports 支持PDF.HTML.XLS.CSV和XML文件输出格 ...

随机推荐

  1. yield

    yield def foo(max): n, a, b = 0, 0, 1 while n<max: yield b a, b = b, a+b n+=1 for item in foo(5): ...

  2. Unity手游之路&lt;七&gt;角色控制器

    Unity手游之路<七>角色控制器 我们要控制角色的移动,可以全部细节都由自己来实现.控制角色模型的移动,同时移动摄影机,改变视角.当然Unity也提供了一些组件,可以让我们做更少的工作, ...

  3. React Native分析(index.ios.js)

    定义创建组件MyComponent(index.ios.js): 'use strict' var React = require('react-native'); var { AppRegistry ...

  4. 获取UILabel上最后一个字符串的位置。获取文字长度和高度,自动换行

    //行的高度. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPat ...

  5. 【java】io流之字节输出流:java.io.OutputStream类及子类java.io.FileOutputStream

    package 文件操作; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...

  6. 在laravel环境下将图片存入MongoDB数据库

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  7. 网站转变风格的css变化

    网站换肤,是一个比较老的话题了,理论很清晰,就是要根据js 来变换文件加载的css文件,根据需求来加载不同的css文件,有了这个基础就很明确要怎么做了,但是实际上还要记录当前用户的cookie  保证 ...

  8. opencv2.4.13+python2.7学习笔记--使用 knn对手写数字OCR

    阅读对象:熟悉knn.了解opencv和python. 1.knn理论介绍:算法学习笔记:knn理论介绍 2. opencv中knn函数 路径:opencv\sources\modules\ml\in ...

  9. CSS垂直翻转与水平翻转

    /*水平翻转*/ .flipx { -moz-transform:scaleX(-1); -webkit-transform:scaleX(-1); -o-transform:scaleX(-1); ...

  10. day08 服务

    pasting ]注册电话的监听 tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);     [4 ...