ireport的使用总结

2023-05-16

ireport的使用总结

截图居然都没显示出来,如有需要可以到(http://download.csdn.net/detail/czp0608/4140640)下载~

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

 

Ireport能做的事情很多,可以生成Excel,PDF;可以做柱状图、饼状图等等。而今天我要总结的不会面面俱到,因为其中的很多功能我至今都尚未使用过,恐怕只有等到需要到了的时候我才会去关心哪些未曾使用过功能吧。好吧,废话不多说了,下面我将用一个实例来开始我对ireport使用的总结吧。

这个实例的需求是要做一个电子保单(客户通常在保险公司投保的时候会有一张保单产生)。对,我们现在就开始采用ireport来开发一张保险公司的电子保单.

 

我使用的ireport版本是:

第一步、当然是下载ireport啦:(如果你电脑里有就跳过这一步了)

下载地址:http://sourceforge.jp/projects/sfnet_ireport/releases/

也可以到网上google下可以很轻易的下载到。

第二步、创建模版

由于要开发的是一个电子保单所以我选择了BlankA4。 如下图:

 

第三步、填写报表名称,点击下一步(我们选择“Launch Report Wizard”需要配置数据源)


将你要开发的报表名称天上就OK啦


默认是空数据源,可以点击“New”按钮进行配置新数据源

 

这里我们选择 JDBC链接,点击Next,就可以配置数据源啦


将你的数据源信息填上,测试成功就OK啦

填写该报表需要使用的查询SQL语句


选择报表中需要用到的字段,可选择全部


选择分组


创建完毕

 

 

 

 

 

第四步、模版设计


① Title:只在整个报表的第一页的最上面部分显示,除了第一页,不管报表中有多少个页面也不会再出现Title band 中的内容。就是报表的标题:

② Page Header:中的内容将会在整个报表中的每一个页面中都会出现,显示的位置在页面的上部。如果是报表的第一页,pageHeader 中的内容将显示在Title Band 下面,除了第一页以外的其他所有页面中,pageHeader 中的内容将显示在页面的最上端,即页眉

③ Column Header:显示在所在页面的最下端,即页脚。

④ Detail:报表内容段,在这个Band 中设计报表中需要重复出现的内容,Detail 段中的内容每页都会出现。

⑤ Column footer:针对Detail Band 的表头段,一般情况下在这个段中画报表的表头。

⑥ Page footer:针对Detail Band 的表尾段。

⑦ Summary:表格的合计段,出现在整个报表的最后一页中的Detail band 的后面,一般用来统计报表中某一个或某几个字段的合计值。

⑧ Background:可以用于加入报表的水印。(mode="Transparent"必须加上这个,背影才可用)

1.  <style name="centeredText" hAlign="Center" vAlign="Middle"/>  

2.  <style name="boldCentered" style="centeredText" isBold="true"/>  

3.  <style name="backgroundStyle" style="boldCentered"  

4.  fontName="Helvetica" pdfFontName="Helvetica-Bold"  

5.  forecolor="lightGray" fontSize="90"/>  

6.  <background>  

7.    <band height="782">  

8.      <staticText>  

9.        <reportElement x="0" y="0" width="555" height="782"  

10. style="backgroundStyle" mode="Transparent"/>  

11.       <textElement rotation="None"/>  

12.     <text>  

13.     <![CDATA[SAMPLE]]>  

14.     </text>  

15.     </staticText>  

16.   </band>  

17. </background>  

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


对背景图片的控制

1.  <background>  

2.   <band height="391">  

3.    <image>  

4.    <reportElement x="65" y="0" width="391" height="391"/>  

5.     <imageExpression class="java.lang.String">  

6.      <![CDATA["reports/company_logo.gif"]]>  

7.     </imageExpression>  

8.    </image>  

9.   </band>  

10. </background> 

 

 
 

 

 

 

 

 

 

 

 

 

 


下面介绍一下相关的组件面板:


我就介绍几个比较常用的吧,如Static Text、Text Field、Subreport …

Static Text : 字面意思就是静态文本,可以在上面任意的写文本字符等,需要特别注意的是中文不显示的问题。

解决方法:选中某一个带中文的 Static Text或TextField,查看“属性”


1:Font name:属性设置为“宋体”或其他中文字体;

2:Pdf Font name is now…:这个属性也得设置为STSong-Light,我特意试了其他的好几个值结果都是不能正常显示,除了设成该值外。

3:Pdf Encoding: 这个属性也得设置为UniGB-UCS2-H (ChineseSimplified),若设置为UniGB-UCS2-V(Chinese Simplified)这个属性则该域将会竖着排列了。

Text Field:文本字段,这个就是从库里读出来的字段啦。该组件若出现中文问题跟StaticText处理方法一样。这个组件特别值得一提的属性是Text Field Expression: 文本域表达式,可以写表达式。我们右键某一个TextField选择Edit Expression,将弹出下图:


                     另外还需要提的一个属性是“Blank when null”当选中该属性时则表示若库里没有值为null的时候ireport将会进行设空处理,以至于出来的报表中不会出现null字符串。

Subreport:  子模版,为什么需要它呢?我的理解是当我们有一个比较大的报表的时候,可能就需要分多个模块,为了层次分明一点,每一个模块就可以做成一个个的子模版了。

在你使用该属性的时候,需要最好先建好一个子模版(就是另外一个子报表)。


这个组件需要注意的几个属性分别是Subreport Expression 子报表表达式,


另外一个属性是Parameters 词义是参数,就是这个子模版需要哪些参数?


我认为这3个组件是最重要的组件,就重点的讲了一下,包括需要注意的点,另外ireport其实还提供了很丰富的组件如Chart、Crosstab、Image、List、Frame等等 ,就不一一介绍啦,大家可以自己设计一个报表将这些组件都用上一遍就大概明白了,其实很多的属性都是一样的比如Left、Top、Width、Height等基本上都有这些属性,ireport是可视化的可以拖拽这些组件,直到你满意位置,具体的设计还是得看大家自己啦,当然一般报表都是很严格的,客户都会提供模版,所以我们只需要照着模版去画就OK啦。

下图是我做的一个简单报表设计:


上面我们介绍了模版中的Title、Page Header、Column Header 等Bands栏,而并没有提及styles、Parameters、Fields、Variables、Scriptlets这几个。


Styles :


可以定义样式

可以设置该样式的条件…

而且只要定义,则其他组件也可以调用,调用方式只需要在当前组件的Style属性选中刚定义的style就OK啦。

Parameters:

Parameters通常是用来在打印的时候从程序里传值到报表里。也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL 查询的条件),如report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。

和使用Fields一样,parameters也需要在创建的时候定义它的数据类型。parameters的数据类型是标准的java的Object。

Variables: 定义变量:在此只举个例子,比方想计算报表中人员列的总额。点快捷方式***----Variables---新增,Variable name处填写personTotal,变量类型选Integer,计算类型选Sum,Reset type处选报表,变量表达试写$F{person_num}(对此列进行总数统计),初始值添new Integer(0),最后再引用这个变量$V{personTotal},这样就完成对人员列的统计

Scriptlets: 可以参考 http://www.blogjava.net/bulktree/archive/2008/12/17/246786.html

 

刚刚我设计的那张报表是带有参数的,所以当我点击预览的时候就会出现:


文本框中需要填写该参数的值

 

出现的结果如下图:


图中出现的哪个是个背景图片,这个其实可以用来做水印的,记得当时我们客户提出要让我们做个水印,由于当时不会,以为ireport不支持这种功能呢,结果发现其实是可以的。只需要注意在设置背景的时候在给reportElement设置mode="Transparent"必须加上这个,背影才可用上文也都提及啦,这里再强调一下。

另外最近才发现的一个问题,而且也是大家可能很容易忽视的一个问题。就是传动态SQL的问题,原本我以为ireport中只能传递参数条件的SQL,(如:SELECT * FROM TEXT WHERE COLOUM = ‘这里传参数’)。

其实不然,ireport的其实是可以将整个SQL语句作为一个参数进行传递的。只是需要注意一个细节,就是$P{PARAM} 和$P!{PARAM}的区别问题啦。当你使用前者的时候,那么就只能传递某一SQL的条件值参数了,而只用当参数设置为$P!{PARAM}这种带有!的参数的时候才可以传递SQL. 这就给我们的应用带来更便利、更灵活的实现啦。

以上这些内容都是我在实际应用ireport中所总结出来的一些经验,不一定所有的都是对的,大家可以积极指出,在下定当谦虚心接受。

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

 

 

 

 

很愿意和大家一起交流

本人Email地址:nickczping@gmail.com, czp0608@126.com

 

有任何疑问都可以随时联系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ireport的使用总结 的相关文章

  • Sublime Text3使用总结

    写在前面的话 xff1a 平时做项目中在用eclipse和vs xff0c 但是对于一些小项目 xff0c 感觉没有必要搞那么大的一个工具使用 xff0c 比如写个小微商城 xff0c 搞个小脚本了什么 xff0c 所以就一直在用Subli
  • Etcd 使用总结

    1 简介 Etcd API 特性 xff1a 原子性 xff1a 一个操作要么全部执行 xff0c 要么全部不执行一致性 xff1a 不论客户端请求的是哪个etcd服务器 xff0c 它都能读取到相同的事件 xff0c 而且这些事件的顺序也
  • Ext4使用总结(二)简单的hbox布局

    布局的合理利用 xff1a 如图 xff1a xtype 39 container 39 margins 39 5 0 0 0 39 layout align 39 stretch 39 type 39 hbox 39
  • makefile和git的使用总结

    makefile主要用在一个项目中有多个C文件 xff0c 源文件分为不同类型 功能和模块 makefile定义了一系列的规则来指定哪一个文件先编译 xff0c 那个后编译等操作 Linux环境下使用makefile可以统一管理方便快捷 x
  • ireport的使用总结

    ireport的使用总结 截图居然都没显示出来 xff0c 如有需要可以到 xff08 http download csdn net detail czp0608 4140640 xff09 下载 相信很多java程序员们 xff0c 在开
  • Anaconda使用总结

    原文地址 xff1a https www jianshu com p 2f3be7781451 序 Python易用 xff0c 但用好却不易 xff0c 其中比较头疼的就是包管理和Python不同版本的问题 xff0c 特别是当你使用Wi
  • SpringBoot 集成积木报表

    前言 积木报表是jeecg的一款开源但代码不开源的一款自定义报表 可以基于 网页灵活调整报表的布局 样式等内容 无需编程 专为企业数据分析 报表制作而设计 降低管理人员汇总制作报表的门槛 解决各类日常管理和 汇报的难题 但是因为代码不开源所
  • iReport 表,每行都有重复的附加记录

    我在整个互联网和这个论坛上进行了搜索 但我找不到实现如下表所示内容的方法 我在用着iReport 4 7 1 请给我一个提示吗 这很容易 您应该添加文本域元素到Detail下带文本字段与字段 这是一个示例 报告设计于iReport The
  • 在jasper报告中命名excel中动态生成的工作表名称

    我有一个要求 我需要生成 Excel 格式的报告 Excel工作表的工作表将动态生成 我想知道是否有一种方法可以命名这些动态生成的工作表 使用 net sf jasperreports export xls sheet names ator
  • iReport - 组织列输出?

    I am working on a profit and loss report that should look like this And my data table looks like this 对于此损益表 我有查询 1 它填充当
  • JasperReports:具有不同方向的子报表

    是否可以将纵向和横向子报表合并到一个报表中 我正在使用 iReport 2 0 4 似乎找不到任何选项来做到这一点 不幸的是 我认为这是不可能的 所有子报告均遵循主报告的方向
  • 如何在iReport中设置整个页面的背景颜色?

    我使用的是 iReport 3 7 4 我想为整个页面设置背景颜色 我没有找到任何背景颜色的报表属性 有人能帮我吗 您可以在以下帮助下解决问题Background Band 我已经把staticText元素上Background Band并
  • JRXML 中的多个页面使用 iReport 进行多页报告

    我只是想知道iReport JRXML是否支持多页报表 如果有的话 可以给一些参考样品吗 我并不是要求一份随着数据增长而增长的报告 我有一份静态报告 其中包含多个页面需要处理 每个页面都有不同的页眉 页脚和内容 只是他们需要成为一个单一的一
  • 使用 Java(或不使用 Java)将 .xls 转换为 .pdf

    有没有办法转换xls文件到一个pdf 我想直接做一个动态报告pdf文件 但没有找到在 iReport 上创建动态列的方法 所以我在 Java 上创建了一个方法 导出到xls动态地 所以我想知道是否有办法将此文件转换为pdf 但它需要位于我的
  • iReport:如何根据法语区域设置格式化日期

    我在格式化日期时遇到问题iReport 我的电脑将区域设置语言配置为French但当iReport生成报告我发现日期格式为English locale 这是我的一些代码jrxml file
  • 如何在ireport中为堆积条形图中的条形设置不同的颜色?

    我需要为堆积条形图中的每个条形设置唯一的颜色 无论我在一个条中看到什么颜色 它都不应该在任何其他条或任何其他堆栈中重复 例如 我的报告中有 5 个栏 每个栏有 3 个不同的堆栈 我想将红色相关颜色应用于第一个条形及其堆栈 第二条应该有蓝色相
  • iReport:如何隐藏带有文本字段的行,而没有数据行包含不同类型的数据

    我有空文本字段 它包含字符串或大十进制值 放在为我的报告拉出的单行上 该行显示一个空行 为了删除具有空行的空白行 我使用了该属性isRemoveLineWhenBlank对于该行中的报表元素 但这是行不通的 有人可以帮我解决这个问题吗 sn
  • 如何在Ireport中给出多选参数空值的条件?

    我正在使用以下方法编写报告iReport http en wikipedia org wiki JasperReports Third party tools我想在其中添加空值条件 它使用单选选项 city P p city or P p
  • 如何在JasperReport中插入分页符

    我有一个 JasperReports 模板 带有填充的细节带 如果我运行该报告 我的页数为 27 27 个详细信息行 我希望详细信息行号 12 以新页面开始 因此我必须在页数 11 之后插入分页符 但我找不到 pagebreak 元素 它在
  • 未找到 GroovyEvaluator

    我会尝试在以下位置制作我的 PIE 3D 报告iReport 在我的 struts xml 中 我用这个来调用我的报告

随机推荐

  • 面试官必问系列:手写发布-订阅模式和观察者模式

    目录 前言 1 发布 订阅模式 定义 手写发布 订阅模式 2 观察者模式 定义 手写观察者模式 3 二者的根本区别 前言 发布 订阅者模式和观察者模式是两种设计模式 xff0c 本质相同 xff0c 但是也有区别 xff0c 在Vue中有不
  • 这9种数组去重方法,直到今天,我才彻底弄懂

    目录 方法一 最常使用 xff0c 也最容易想到的思路 xff08 ES5 xff09 方法二 ES6 Set 去重 xff08 ES6 中最常用 xff09 方法三 使用 indexOf 去重 方法四 使用 sort 排序去重 方法五 使
  • 读完这篇文章,我真的在下班前几分钟学会了JS的5种for循环的差异

    目录 前言 正文 一 角色介绍 1 for 2 forEach 3 map 4 for in 5 for of 二 使用差异 1 场景差异 2 能力差异 三 性能比较 四 使用建议 前言 for 循环 在平时的前端开发中使用频率很高 xff
  • 当面试官问 promise 的时候,他们希望听到什么(一)

    基础知识 1 同步回调和异步回调的区别 同步回调 理解 立即执行 完全执行完了才结束 不会放入回调队列中 例子 数组遍历相关的回调函数 Promise 的 executor 执行器函数 异步回调 理解 不会立即执行 会放入回调队列中将来执行
  • 当面试官问 promise 的时候,他们希望听到什么(二)

    目录 前言 一 前提知识 1 JS 单线程机制 2 JS 任务队列与事件循环 3 Promise 回顾 二 题目实战 1 开头提到的题目 2 稍有难度 3 挑战升级 前言 上一篇文章 xff0c 当面试官问 promise 的时候 xff0
  • JS 防抖与节流的原理分析和代码手写

    目录 前言 作用 防抖 使用场景 分析原理 手写代码 节流 使用场景 原理分析 手写代码 小补充 前言 前一段时间 xff0c 我学习了 JS 的防抖与节流 xff0c 自认为掌握住了它们 xff0c 当我在做面试题的时候 xff0c 遇到
  • ELK-日志收集系统在Centos上环境安装

    ELK 日志收集系统在Centos上环境安装 文章目录 ELK 日志收集系统在Centos上环境安装 前言安装elastcsearch6 5 4安装准备学习资料启动创建新用户取掉只能本机访问的配置配置跨域访问启动命令测试 安装分词ik安装e
  • Linux环境下下载pydicom

    Linux中只要使用命令即可 sudo pip install pydicom 如果出现sudo xff1a pip xff1a command not found 把sudo去掉 xff0c 再操作一次 因为在执行Linux命令时 xff
  • C语言编程实现汉诺塔问题

    C语言编程实现汉诺塔问题 1 首先解释一下 xff0c 汉诺塔问题 xff1a 古代梵塔内有A B C3个座 xff0c 开始时A座上面有64个盘子 xff0c 盘子大小不等 xff0c 大的在下 xff0c 小的在上 一个老和尚想把64个
  • ORA-28000: the account is locked

    原因 xff1a Oracle账户多次以错误密码登录 xff0c 导致数据库服务器宕机 xff0c 账户被锁定 以系统账户sys 登录Oracle xff0c 查看sql SELECT FROM DBA PROFILES WHERE RES
  • Docker镜像编译方式

    1 普通Dockerfile的缺点 我们通常情况下要编译Spring Boot的Docker镜像 xff0c 一般会写一个下面这样的Dockerfile FROM openjdk span class token operator span
  • Python入门第一章笔记 从安装到编写hello world

    1 下载Python安装包 xff1b 可以到官网下载 xff1a https www python org 但是如果没有翻墙的话 xff0c 下载会很慢 25M安装包 xff0c 需要1个小时以上 如果没有耐心等可以在csdn进行下载 x
  • 养老产业政策链接

    江西省养老政策文件 xff1a 江西省养老服务条例 http mzw ganzhou gov cn gzsmzjy c103172 202201 d238525b35bb47b49b3de312c9b63a60 shtml 南昌市养老服务体
  • 我多变的2013

    我多变的2013 第一篇 xff1a 回顾 回顾工作 首先简单的做个自我介绍吧 xff0c 我是87年的 xff0c 北漂已经是第5个年头了 xff0c 一直都从事java开发工作 前后只换过一家公司 xff0c 第一家待了近两年 xff0
  • 我花1200大洋所学的“元学习课”究竟学了些什么?

    我花1200大洋所学的 元学习课 究竟学了些什么 xff1f 讲课的是台湾的一位大牛名叫Xdite xff0c 以及亿万富豪李笑来 能够跟牛人学习怎么学习我想应该不会有错吧 xff0c 对我来说这次做的应该是一次正确的决定 xff0c 所谓
  • 成长记录-开启我的新生 (2016-12-06)

    真的是很惊险 xff0c 我差一点就错过了 获得新生 的机会 xff0c 我在蜻蜓音频中听到了逻辑思维 xff0c 从逻辑思维中了解到了 得到 xff0c 从 得到 中订阅了吴军博士的 硅谷来信 xff0c 却在过去的好几个月里 xff0c
  • 最新Java电子书

    最新Java电子书 JAVA参考大全 J2SE 5EDITION 世界级程序设计大师作品 Thinking in Java第三版 43 第四版 xff08 中文版 43 习题答案 xff09 Java数据库高级编程宝典 Java核心技术第八
  • ELK-ElasticSearch权威指南笔记

    ELK ElasticSearch笔记 文章目录 ELK ElasticSearch笔记 前言测试工具 语法索引 xff0c 文档和类型文档元数据检索索引里文档数据查看当前节点的所有 Index查看所有index的mapping 映射 查看
  • 关于JAVA中内存溢出的解决办法

    关于JAVA中内存溢出的解决办法 J2ee应用系统是运行在J2EE应用服务器上的 xff0c 而j2ee应用服务器又是运行在JVM上的 xff0c 生成环境中JVM参数的优化和设置对于J2EE应用系统性能有着决定性的作用 要优化系统 xff
  • ireport的使用总结

    ireport的使用总结 截图居然都没显示出来 xff0c 如有需要可以到 xff08 http download csdn net detail czp0608 4140640 xff09 下载 相信很多java程序员们 xff0c 在开