一、前言

相信很多java程序员们,在开发报表的时候都使用过ireport, ireport功能确实很强大,可以开发出各式各样的报表来。ireport是java应用中做报表的一款很好的利器。这也是之所以很多的java程序员们热衷于它的原因,而且因为ireport本身也是用java语言开发的,这更令我们java程序员们感觉亲切。事实上在网上找ireport的资料并不是很多,在我们使用的时候出现的很多问题大多数甚至在网上都很难找到其原型,因此而困恼着许许多多的ireport的使用者。本人使用ireport开发开源字节低代码平台也有一段时间了(从2017年10月份至今),多多少少积累了一些使用的经验,在此做一下总结,并想和大家一起分享,就当是抛砖引玉吧。

二、常见问题及处理方法

1、IReport制作报表pageheader只在第一页出现的解决办法

解决方法:只要打开ireport,pageheader的属性,在print when expression设置$V{PAGE_NUMBER}.equals(1);

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

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

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

3、 IReport中如果动态单元格中$F{propertyName}显示的字过长,如何换行?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9、IReport中大小写问题:

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

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

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

10、设置共几页,第几页

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

11、多份报告灵活组合在一起输出,伪代码如下:

Map<String, Object> map = new HashMap<String, Object>();
ResultSet rs = stmt.executeQuery(sql);// 执行query语句得到结果
JRDataSource jrDataSource = new JRResultSetDataSource(rs);
JasperPrint jasperPrintone = JasperFillManager.fillReport(fileName1, map, jrDataSource);
ResultSet rstwo = stmt.executeQuery(sqltwo);// 执行query语句得到结果
JRDataSource jrDataSourcetwo = new JRResultSetDataSource(rstwo);
JasperPrint jasperPrinttwo = JasperFillManager.fillReport(fileName2, map, jrDataSourcetwo);
jasperPrintList.add(jasperPrinttwo);
// 输出报告
ServletOutputStream outputStream = response.getOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
exporter.exportReport();
outputStream.flush();
outputStream.close();

13.填充空白行怎么办?

如果是resultSet数据源,可以通过union添加;如果是javabean数据源,可以给集合添加空对象

12、案例如下图:

以上这些内容都是我在开源字节低代码平台中实际应用ireport所总结出来的一些经验,有更好的解决方案大家可以积极交流,在下定当谦虚心接受。

当然ireport远远不知这么些功能,希望大家可以一起分享我们的使用经验,以至于我们可以在实际开发的时候更高效的完成任务。

如若转载,请注明出处:开源字节   https://sourcebyte.cn/article/208.html

IReport常见问题及处理方法相关推荐

  1. WIN7 常见问题及解决方法

    -------------------------------------------------------------- .★常见问题及解决方法 1.安装过程中出现一下的错误信息提示: Windo ...

  2. hive常见问题及解决方法

    Hive常见问题及解决方法 问题1:Specified key was too long; max key length is 1536 bytes     hive.log :  2018-01-0 ...

  3. nacos 集群_Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  4. c转义字符以及常见问题和解决方法||c中的注释

    常见问题和解决方法 vs2010编辑器 显示行号 c中的注释 自己配置vs2010注释的快捷键 注:

  5. linux lw3m多行文本使用,linux常用命令以及一些常见问题和解决方法教程.docx

    linux常用命令以及一些常见问题和解决方法教程 端口以及ip之间抓包1.监视指定网络接口的数据包tcpdump -i eth1如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0 ...

  6. ArcGIS Engine 10 开发常见问题的解决方法

    ArcGIS Engine 10 开发常见问题的解决方法 You are not Licensed for 弹出提示框,点击确定,VS工程自动关闭 http://www.cnblogs.com/Ris ...

  7. mysql开发问题解决_开发过程中mysql常见问题的解决方法

    本篇文章给大家带来的内容是关于开发过程中mysql常见问题的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录开发过程中遇到mysql相关的问题以及解决方法,长期更新. 远 ...

  8. honeywell扫码枪取消回车_霍尼韦尔条码扫描器常见问题与解决方法

    原标题:霍尼韦尔条码扫描器常见问题与解决方法 对于用户使用无线条码扫描器还是有线,再使用过程中难免会遇到一些小问题,又不知道这么解决,下面兆麟条码技术部提供一些条码扫描器出现的问题以及解决方法,供大家 ...

  9. 饥荒进地洞服务器无响应,饥荒联机洞穴设置及常见问题的解决方法

    进阶篇 服务端mod设置: 首先 (1)下载好要用mod,然后下载通用工具,解压放到DST的mod文件夹里运行 (2)此时在文档\Klei\DoNotStarveTogether会多出一个文件modo ...

最新文章

  1. 【总结】sqli-labs Less(1-35) 小结
  2. 我不是人:一年发论文180篇,横跨多个学科领域,收获99次引用
  3. 高度平衡二叉树的构建_平衡二叉树(AVL)树
  4. 从windows server的文件服务到分布式文件服务(八)
  5. Cocos2d-x开发---关于安卓打包所遇到的错误记录
  6. 告别Kafka Stream,让轻量级流处理更加简单
  7. A/B 测试:以变应变,给用户更好的体验“宠爱”
  8. ITK:将两个图像与棋盘格图案组合在一起
  9. 【在线研讨】《敏捷开发用户故事分类与组织结构(三期-1)》
  10. 计算机主机异常经常蓝屏,电脑频繁蓝屏怎么办
  11. com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
  12. java安装完后桌面怎么没有快捷方式_关于Eclipse在文件夹可以打开,在桌面建立快捷方式却无法打开的问题...
  13. Mac电脑的文件快捷访问工具:Default Folder X 5
  14. 多传感器融合的四种经典结构
  15. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...
  16. linux docker容器MySQL自动备份发送到邮箱
  17. 手把手教程9-2: 460使用Flash模拟EEPROM
  18. 洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
  19. 凝思磐石linux系统怎么切双屏_linux (ubuntu) 下双屏显示解决?
  20. Android 电池管理

热门文章

  1. CSS带箭头的提示框实现
  2. Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
  3. Linux获取以毫秒为单位的当前时间
  4. dell服务器 指示灯_dell服务器i(图标)的指示灯一直闪烁,怎么回事
  5. php小程序开发实例,微信小程序全局配置开发实例
  6. jetBrains 最新 lisence server
  7. ESFP型人格的特征,ESFP型人格的优势和劣势分析
  8. CSS实现橡皮筋效果
  9. 苹果手机升级后怎么恢复旧版本_手机误删视频怎么恢复?同时适合安卓和苹果手机的恢复方法!...
  10. 良心安利服装类3d打印模型素材网站