`
happyqing
  • 浏览: 3204838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IReport问题整理

阅读更多

1.         问题:IReport如何实现变量字段$F{ propertyName}赋值为一个NULL对象时不显示”null”, 而显示为空白?

解决方法:选中动态单元格,右键选择属性,在弹出对话框TextField选项卡中选中Blank when null

思考:以往我们为IReport中变量字段赋值时会在程序或报表Textfield expression中用三目符号去判空,用IReport此功能既可以提高准确度,又可以减少工作量。

 

2.  问题:IReport中如果动态单元格中$F{propertyName}显示的字过长,如何换行?

解决方法:选中动态单元格,右键选择属性,在弹出对话框TextField选项卡中将选中Stretch With Overflow。

思考:有很多bug都是因为动态文字($F{propertyName})显示不全而造成的,而且这些bug的修改方式也不是根本解决办法,因为就算拉长单元格对于动态字过多时也会出现同样的问题,而且现场也会出现同样的问题。有了“动态长度超过文本框长度会自动换行”这个功能就会解决此问题。

 

3问题:iReport中一个单元格由于内容太多而换行了,而其它没换行那么其显示高度肯定不一致了,如何解决换行导致的单元格对不齐问题?

解决方法:把同行所有单元格的属性Stretch Type=" RelativeToBbandHheight "。选择同一行所有单元格,点击右键选择属性,在弹出对话框Common选项卡中选中将Stretch Type属性设为"RelativeToBbandHheight"

思考:有了此功能,我们使打印格式显示得更加整齐,就像一个表格框着每个单元格一样。

 

4问题:iReport中当单元格中的文字出现换行跨页的情况,如何保证换行的字段能够正常显示,并且保证换行后同行的高度保持一致?

解决方法:选择同行所有单元格,,点击右键选择属性,在弹出对话框Common选项卡中选中Print when detail over

思考:以前出现翻页打印时常出现打印内容缺失、打印格式不对齐的bug。此功能可以解决上诉问题。

 

5问题:iReport中的子报表如何实现根据其上部是否有打印数据而变打印位置?

解决方法:选中子报表,右键选择属性,在Common选项卡中将Position type属性置为Float,Stretch Type属性置为RelativeToTallestObject

思考:当第一页打印基本信息在上部,子报表在下部,子报表数据很多需要翻页,并且翻页后需要顶页打印子报表的内容,这时利用此功能最恰当不过了。如果动态文本框因为换行而出现文字重叠也同样可以选择“FLOAT”解决此问题。

 

6、问题:打印时经常遇到翻页打印,而且每一页打印的内容不一致,iReport如何实现此功能?

解决方案:创建多个Frame,每个Frame上可以有不同的打印布局,通过控制Frame的显示页数来控制翻页后不同的显示内容。具体操作:选择Frame,右键选择属性,在Common选项卡中的Print When excepression文本框中输入控制代码,如“new Boolean($V{PAGE_NUMBER}.intValue()>1)”表示超过一页时才显示此Frame上的内容。

思考:此功能可以更灵活地满足翻页打印不同内容的需求

 

7问题:以往一些需要打印变量的格式化工作往往在程序实现,实际上最好在模板中去进行格式化(代码复用、去除耦合),那么iReport为能够提供哪些格式化规则呢,我们又怎样能利用它们呢?

解决方法:iReport的每个变量单元格都有许多为格式化规则可以选择(如下图),而且我们也可以增加自己的格式化规则,具体步骤:选中单元格,右键选择属性,在Text Field选项卡中点击Create按钮为变量添加格式化规则(变量类型要与格式化规则对应)。每一项格式化规则这里就不再赘述了。

思考:打印需求变化最大就是格式了,我们往往因为格式的变化而增加重复代码或者打印项,而模板是客户化的,在模板上格式化可以最大程度上避免这个问题,例如,日期可以格式化各种形式来显示,货币符号用那种、千分位是否分割都可以通过此功能实现。

 

 

8、问题:ireport中大小写问题:

1、parameter中如果小写,引用也小写

2、$F{},一般都大写

3、子报表中引用父报表中查询出来的值时,只需要小写即可,即在子报表的parameter中只需要小写

 

一、iReport 中获取系统当前时间

1、选择TextField类型为 java.util.Date,选择TextField的Expression Class(类型)为 java.util.Date

2、在pattern中选择时间格式

3、在TextField Expression中写 java.util.Calendar.getInstance().getTime()

 

二、避免为空

方法一、在属性选项中找到blank when null即可

方法二、$F{ABB614}?$F{ABB614}:""

 

三、设置时间格式

方法一、可以使用内嵌函数截取字符串来显示

1、利用substring来截取 (针对String类型)

$F{AAE036}?(($F{AAE036}.toString()).substring(0,4)+"年"+($F{AAE036}.toString()).substring(4,6)+"月"+($F{AAE036}.toString()).substring(6,8)+"日"):""

2、利用内置的函数来取 (针对date类型)

"日期"+($F{ABB017}?String.valueOf($F{ABB017}.getYear()+1900)+"年"+String.valueOf($F{ABB017}.getMonth()+1)+"月"+$F{ABB017}.getDate():"")+"日

方法二、设置 Exception class 为date类型,然后在pattern中设置时间格式,可以自己写,例如××××年××月××日,但是要注意,如果为空无法用$F{ABB614}?$F{ABB614}:"",只能使用blank when null这种方法

 

四、在ireport中使用html中的标签

例如:<br> 

1、找到属性面板中的markup选择为html

2、在需要的地方加入<br>

 

五、使某个字段中的数据在特定条件下才打印出来

    通过设置字段的PrintWhenExpression,我们可以限定只有在某些特定的条件下字段值才会被打印出来,在PrintWhenExpression 中需要设置Boolean 型的表达式,如:new java.lang.Boolean($F{type}.trim().equals("mod_cook"))

 

六、嵌套子报表

1、在面板属性中找到Subreport,然后拖进你要放入的地方,放开鼠标后,会有一个新建报表。新建完报表之后会有个名为SUBREPORT_DIR 的Parameter,string类型,他会有个默认路径,指的是子报表的路径。由于子报表往往有多条数据,故最好单独放在一个detail中(例如:查询出来有多条数据,那么会循环显示在detail中)。

2、如果子报表中需要传入数据,那么就先点中子报表,然后在属性栏(不是参数里)中找到“parameters”,新建一个,例如:

     name为abz050  ,Expression为$F{ABZ050},因为这里的值是父报表查询的出来之后的值,所以不是用Parameter,而是Field。

3、在子报表中引用值,首先在子报表中定义一个变量Parameter,然后引用即可。

那为什么能找到呢?

因为:你在创建子报表的时候,也会自动创建一个Parameter,名称默认为SUBREPORT_DIR,它里面有个默认路径(新传入的路径会覆盖该默认路径)。

同时,可以点中子报表查看他的属性,里面有个Subreport Exception的值为$P{SUBREPORT_DIR} + "子报表名称.jasper",这样系统就能找到了。当然系统还会自动配置一些其他子报表属性,具体的自己新建一个看看吧。

 

七、自动换行

    如果不处理一下,有些字段的内容太长了就会显示不全。选中该字段,右击->属性,在Text Field把Stretch with overflow勾上。

    同时把该行所有的字段选上,右击->属性,在Common的Stretch Type选择Relative to tallest object。

 

八、内嵌函数的使用

举例:($F{ABB617}).toString()).substring(0,4)+"年"          把ABB617(Date类型)先转化成String然后截取年

ireport中使用内嵌函数只要在字段上看看他有哪些方法,然后直接使用即可。

 

九、高度根据内容自动变高

1、选中主键,在属性中找到 Stretch With Overflow并选中。并把他单独放在一个Detial或者其他 里面即可。
2、还有一个属性叫Stretch type,默认的值是No Stretch,可以改成Relative To Band Height。

第二个步骤我个人认为可做可不做。

     当然第二个步骤的功能在做表格的时候很有用,例如:表格是2列,那么两边的数据肯定不一样,或者是左边就是静态的,那么如果不选择这个属性,你就会发现,右边的数据很多的时候会扩充,但是左边不会,这个时候,我们就可以设置该属性,并把它们放到一个单独Detial或者其他容器中,那样 左右两边 就会等高了

 
十、设置共几页,第几页

$V{PAGE_NUMBER} 表示当前是第几页 ,在text field 的 选项evaluation time选report是共几页,now表是当前页。页码可在ireport里直接设置。  “共几页 第几页”

我是写在page footer 中。

 

参考:

http://blog.csdn.net/john2522/article/details/8954518

 

分享到:
评论

相关推荐

    ireport报表资料整理.chm

    ireport报表资料整理.chm ireport 报表 整理 chm java 个人学习收集网上资料辛苦整理而成

    ireport + struts2整理

    【标题】:“ireport + struts2 整理” 【正文】: 在IT行业中,ireport和Struts2是两个非常重要的开源工具,它们分别在报告生成和MVC框架领域有着广泛的应用。ireport是JasperReports库的一个图形化设计工具,...

    ireport内部培训资料

    iReport 是一个基于 Java 的开源报表设计工具,它是 JasperReports 的配套工具,主要用于设计复杂的报表模板。JasperReports 是一个广泛使用的 Java 报表库,它允许开发者在应用程序中生成 PDF、HTML、XLS、CSV 等...

    iReport java 报表

    2 精华教程_1_常规问题解决方案 iReport 教程 24K 3 精华教程_2_JasperReports深入讲解 iReport JasperReports深入讲解 30K 4 精华教程_3_报表结构完全掌握 iReport 报表结构完全掌握 38K 5 精华教程_4_报表元素...

    ireport+jasperreport开发中问题解决方案

    7. **报表元素对齐与整理**:使用iReport的文档结构列表批量选择元素,并利用快捷键进行对齐和整理,如Ctrl+Shift+L和箭头键可以实现快速对齐。 8. **子报表定位**:子报表的位置可以基于其上方的数据是否存在来...

    ireport常用的函数说明

    ireport在进行应用开发时,常用的函数:比如数据为空时,不让其显示或者直接显示为“0”;男女以及性别展示(比如1显示“男”,2显示“女”)等函数写法,全部都整理到此文档中了。

    Ireport整理资料

    【Ireport整理资料】 IReport是一款强大的开源报表设计工具,它是JasperReports库的一部分,用于设计复杂的报表模板。本文将深入探讨IReport的基础知识、功能特性以及如何进行报表设计,帮助初学者快速入门。 1. *...

    ireport报表完整资料

    - **问题汇总**:整理的常见问题和解决方案,有助于解决实际开发中遇到的困难。 - **好的帖子超链接**:链接到论坛或博客上的技术文章,提供了更深入的讲解和技巧。 6. **最佳实践** - **模块化设计**:将复杂的...

    iReport3.0报表全汉化文件part1

    这个是最新iReport3.0开源报表的整理好的汉化文件库,基本上是全汉化了,由于上传限制分卷压缩的,这个是分卷1,请下载完成后下载分卷2,解压后把这个文件的iReport.jar放到iReport\lib替换原文件就可以了,原程序...

    iReport3.0报表全汉化文件part2

    这个是iReport3.0开源报表的整理好的汉化文件库,基本上是全汉化了,由于上传限制分卷压缩的,这个是分卷2,请下载分卷1的继续下载这个包,解压后把这个文件的iReport.jar放到iReport\lib替换原文件就可以了,希望对...

    iReport使用教程[转]+总结+模版

    【描述】虽然原始的描述为空,但根据标题我们可以推断,这篇教程可能是作者从其他来源整理而来,结合了自己的理解和实践经验,旨在为用户提供一个关于iReport的全面学习资源。同时,还可能包含了一些模板,以便用户...

    java和ireport制作报表实例

    在IT行业中,报表系统是企业信息化管理不可或缺的一部分,它能够帮助我们有效地整理、展示和分析数据。本实例主要探讨如何使用Java与iReport工具来创建一个报表系统。iReport是一款强大的开源报表设计工具,它可以与...

    ireport+jasperreports 项目实例

    ireport jasperreports 项目实例,导入myeclipse下,运行在tomcat上即可 导出pdf,doc,xls,html格式的文档,自己整理可用的,不忽悠你,算是比较完整的 不仅在servlet中导出,而且整合了struts2导出,非常实用,当然...

    JasperReport与iReport的配置与使用[整理].pdf

    【JasperReport与iReport简介】 JasperReport是一款强大的开源报表生成组件,它基于Java语言,主要用于构建Web应用程序和Java应用程序的报表。JasperReport允许开发者创建复杂的报表,并且支持多种数据源,如数据库...

    Ireport下载地址(全).zip

    Ireport下载地址(全),2.1.0到5.6.0版本都有,吐血整理,请按需下载。iReport-Designer for JasperReports

    iReprot相关资料收集

    iReport是一款强大的报表设计工具,尤其在Java应用中被广泛使用,它允许开发者创建复杂的报告布局,包括表格、图表、图像等元素,并且能够与Java应用程序无缝集成,通过JasperReports库来呈现和导出报告。...

    JasperReport中文用户手册

    本手册由一群热心的技术爱好者共同整理完成,意在提供一个免费的学习资源,帮助更多人熟悉JasperReport。 #### 第1章:JasperReport简介 ##### 1. JasperReport是什么? JasperReport是一款基于Java的开源报表...

    JasperReport详解

    作者通过翻译和整理JasperReport Ultimate Guide,并结合自己的实践,提供了一份中文文档,旨在帮助其他开发者更轻松地掌握这个工具。 总之,JasperReport与IReport的组合为Java开发者提供了一套强大的报表开发解决...

    java常用网址,可能已经过期了

    根据提供的文件信息,我们可以整理出一系列与Java相关的知识点和资源链接。下面将对这些资源进行归纳和总结,并尽可能地提供更多的细节。 ### Java 常用网址知识点 #### 无状态服务 (Tag) 无状态服务是指在处理...

Global site tag (gtag.js) - Google Analytics