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类型)

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

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

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

例如:
1、找到属性面板中的markup选择为html
2、在需要的地方加入

五、使某个字段中的数据在特定条件下才打印出来,通过设置字段的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问题的整理相关推荐

  1. iReport 相关资料汇总

    JapertReports&iReport的开源报表实战 本文来自CSDN博客,转载请标明出处:[url]http://blog.csdn.net/hellopro/archive/2007/ ...

  2. ireport 5.6.0的常见使用及开发报表中经常遇到的问题总结

    前言:第一次使用这个ireport报表工具的时候,在使用过程中遇到很多问题,百度的答案也是零零散散,有的可以找到,有的根本就没有.使用了近2个月,在此期间看过 2 3 本关于ireport的书,几十个 ...

  3. ireport中文手册3.7版(无图)

    目录 Giulio Toffoli 1 1 序言... 6 什么是iReport?. 6 功能特点:... 7 iReport 社区:... 7 鸣谢:... 8 2 入门... 8 必要条件:... ...

  4. iReport 设计介绍

    iReport是一个能够创建复杂报表的开源项目.它100%使用Java语言编写.是目前全球最为流行的开源报表设计器. 由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表. 以下是iRepor ...

  5. jasperreport开发手册--ireport教程

    转自:  https://blog.csdn.net/frankaqi/article/details/50203877 iReport   http://www.jasperreport.net 一 ...

  6. Map再整理,从底层源码探究HashMap

    前言 本文为对Map集合的再一次整理.内容包括:Map HashMap LinkedHashMap TreeHashMap HashTable ConcurrentHashMap Map Map< ...

  7. List再整理,从代码底层全面解析List(看完后保证收获满满)

    前言 本文为对List集合的再一次整理,从父集接口Collection到顶级接口Iterable再到线程不安全实现类:ArrayList.LinkedList,再到线程安全实现类:Vector(被弃用 ...

  8. LeetCode简单题之整理字符串

    题目 给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s ...

  9. TVM/Relay 的 PartitionGraph()(mod) 函数讨论整理

    TVM/Relay 的 PartitionGraph()(mod) 函数讨论整理 TVM/Relay 的图形分区功能.以下简单示例,错误信息. PartitionGraph() 函数指定图形是用带有 ...

  10. AIFramework基本概念整理

    AIFramework基本概念整理 本文介绍: • 对天元 MegEngine 框架中的 Tensor, Operator, GradManager 等基本概念有一定的了解: • 对深度学习中的前向传 ...

最新文章

  1. 半导体并购停不下来 ADI拟148亿美元收购Linear
  2. 操作系统 真象还原 读书笔记
  3. ASSERT: “QGLFunctions::isInitialized(d_ptr)“ - Runtime Exception
  4. 通过Github Teams进行代码仓库的权限访问控制
  5. 使用 Visual Studio 2019 批量添加代码文件头
  6. 【机器学习】AI系统实时监测独居老人症状
  7. 用js内置对象XMLHttpRequest 来用ajax
  8. leach协议c++代码_入门教程4:教你STM32F407标准库移植机智云代码(控制LED灯)
  9. 强化学习入门笔记(一)——莫烦Python
  10. 查看oracle客户端的版本,Oracle客户端版本及位数(Windows系统)查看方法
  11. 小尺寸笔记本将走向何方 — X280 长测
  12. 一文看懂量子十问(上篇)
  13. 《HelloGitHub》第 67 期
  14. 2017cad光标大小怎么调_怎么设置CAD中十字光标的长度
  15. java后端必会【基础知识点】
  16. harbor 下载地址(国内代理)
  17. 11种QQ技术 ,让你成为QQ高手
  18. deep learning (深度学习)资源整理,非常全面【转】
  19. xshell服务器登陆django
  20. js获取摄像头权限实现拍照功能

热门文章

  1. explain mysql语句_使用 explain 查看 MySQL 中 SQL 语句的执行情况 - 文章
  2. su必备插件_sketchup插件 su十大必备插件
  3. 解决Ubuntu键盘错乱问题
  4. Windows任务计划定时运行程序的配置方法
  5. linux服务器之间的文件同步(双向同步unison+inotify)
  6. HTML炫彩按钮,炫彩流光按钮 html+css
  7. Windows10系统右键无法新建文本文档解决方案
  8. Forth 语言学习
  9. ipad如何与手机微信连接服务器地址,如何设置微信在手机和ipad同步 - 卡饭网
  10. Kali基于字典的无线破解