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的使用总结 的相关文章

  • AD2S1210的使用总结

    目录 前言一 AD2S1210工作原理1 旋变信号2 旋变 数字转换3 TYPE II跟踪环路 二 程序设计部分1 初始化2 向AD2S1210中写入数据3 从AD2S1210中读取数据 总结2022年3月8日补充2022年3月31日补充
  • ireport的使用总结

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

    1 Makefile 简介 Makefile 是和 make 命令一起配合使用的 很多大型项目的编译都是通过 Makefile 来组织的 如果没有 Makefile 那很多项目中各种库和代码之间的依赖关系不知会多复杂 Makefile的组织
  • firewall-cmd 使用总结

    firewalld的简要说明 firewalld firewall cmd firewall offline cmd它们Python脚本 xff0c 通过定义的在 usr lib firewalld下面的xml配置信息 xff0c 在启动时
  • Ubuntu下PyQt5使用总结

    因为工作中需要给交付团队开发桌面工具 xff0c 考虑到交付团队多使用Mac xff0c 调研了一下发现PyQt5可以实现跨平台 xff0c 满足工具开发需要 xff0c 就用其开发了桌面工具 现以ubuntu开发环境为例总结一下开发过程
  • 使用 iReport 根据条件设置文本字段中的背景颜色

    我的条件样式有问题iReport 我有以下内容文本字段 nameField 字段值 field1 30 field2 40 field3 50 field4 23 field5 1 field6 45 field7 34 field8 20
  • 如何在iReport中使用SQL查询同一项目的多个SUM

    我正在使用 iReport 创建 JasperReport 因此 我仅限于 一个 SQL 查询 我有一个表 统计 其中包含 名称 VARCHAR 计数 INTEGER 和 日期时间 DATETIME 列 当最后一天的 名称 为 测试 时 获
  • Jasper iReport 自定义日期和自定义时间

    在 Excel 中 我有一个日期格式 yyyy MM dd hh mm 和一个时间格式 hh mm 我将其设置为 iReport 数据库的源 对于日期 我在 iReport 中设置了自定义日期格式 与 Excel 中相同 然后我设置类 ja
  • iReport 的 isStretchWithOverflow 问题

    目前我使用该属性isStretchWithOverflow当文本字段中的内容太长时换行 有用 但我想知道如何确定它断线的方式 下面是我的片段jrxml file
  • 在 iReport 中将 Double 格式化为字符串

    我正在做一份报告 需要将 4 个变量合并为一个 如果我单独处理变量 我可以毫无问题地格式化它们 但是当我将它们合并到一个字符串中时 双精度值变为 0 0 而不是 0 00 我怎样才能使它成为原来的0 00 现在的代码如下所示 F someD
  • 将多个相同值字段分组到一个单元格中

    首先 记录按表组件显示在表中 而不是在报表中显示 结果如下 YEARS MONTHS SUMMONTH SUMQUARTER 2009 Jan 130984 432041 Feb 146503 Mar 154554 Apr 147917 4
  • 在 Ubuntu Linux 上运行 sudo/su 应用程序时“未指定协议”

    我尝试使用以下命令在 Ubuntu 和 Java 7 上运行 iReport 5 6 sudo iReport 5 6 0 bin ireport No protocol specified 我收到一个错误 当我尝试在没有的情况下运行它时s
  • JasperReports:具有不同方向的子报表

    是否可以将纵向和横向子报表合并到一个报表中 我正在使用 iReport 2 0 4 似乎找不到任何选项来做到这一点 不幸的是 我认为这是不可能的 所有子报告均遵循主报告的方向
  • 与 jasperReports 完全混淆

    在开始工作前两天 我才刚刚接触 jasper 我下载了 jasperReports 和 iReports 并在我的 salesforce 帐户中安装了 iReports 并安装了 jasper4salesforce 但没有找到任何 jasp
  • 空“key”参数错误

    我正在使用 IReport 3 5 0 我的 java GWT 应用程序使用编译的 jasper 文件来创建报告 我正在 java 应用程序中创建数据源并使用fillReport 报告填写方法 它工作正常 它填充了我在 jrxml 和 Ja
  • iReport:如何根据法语区域设置格式化日期

    我在格式化日期时遇到问题iReport 我的电脑将区域设置语言配置为French但当iReport生成报告我发现日期格式为English locale 这是我的一些代码jrxml file
  • 如何在 JasperReports/iReport 中使用同一数据源两次

    我正在尝试找出如何最好地使用图表和代表相同数据集的表格来制作报告 我需要克服摘要的定位在底部 因此打算使用子报表和表子报表 我正在尝试在一个详细区域中使用两个表格和一个图表 如果我设置datasourceexpression for to
  • iReport 中的 google.zxing 条码生成器

    我想在我的页面中添加条形码并可以预览它 条形码生成器是谷歌 zxing我的报告工具是iReport 但不知道如何配置Image Expression and Expression Class中的图像的iReport 两个关键思想是首先编写一
  • 每行有多个系列的图表

    我正在尝试做一个iReport与此表的图表 name totalcalls handled abandoned rejected customerservice 300 100 100 100 itsupport 500 300 100 1
  • 趋势线的最佳拟合曲线

    问题约束 数据集的大小是已知的 但数据本身并不已知 数据集每次增长一个数据点 趋势线一次绘制一个数据点 使用样条 贝塞尔曲线 Graphs 下面的拼贴画显示了具有相当准确的趋势线的数据集 这些图表是 左上 按小时计算 大约有 24 个数据点

随机推荐

  • spring超全面详解

    spring概述 Spring 是于2003年兴起的一款轻量级的 非侵入式的IOC和AOP的一站式的java开发框架 为简化企业级应用开发而生 1 轻量级 就是指spring核心功能的jar包不大 2 非侵入式 我们的业务代码不需要继承或实
  • 虚拟机怎么从图形界面转到命令行(去掉桌面)

    点击 xff1a ctrl 43 alt 43 F1切换到桌面 点击 xff1a ctrl 43 alt 43 F5切换命令行 xff08 去掉桌面 xff09
  • springboot是怎么实现自动配置的?

    一 springboot是对spring框架做的一系列优化 xff0c 减少了大量繁琐的配置 xff0c 并提供了内置web服务器 xff0c 让程序运行更快 1 springboot起步依赖 xff1a 简单的说 xff0c 起步依赖就是
  • 第三章 Linux文件目录查找

    Find命令 find命令在Linux中搜索效果非常不错 xff0c 不仅可以按照文件名搜索文件 xff0c 还可以按照权限 时间 容量大小等来搜索文件 xff0c 但是find命令它是通过递归式在硬盘中进行搜索的 xff0c 如果指定的搜
  • 超市购物小程序

    编写一个超市购物程序 xff0c 在一家超市有牙刷 毛巾 水杯 苹果和香蕉五种商品 xff1a 拥护输入序列号进行购物 xff0c 并在输入购物数量后算出所需花费及退出购物时的总花费 一次购买结束后 xff0c 需用户输入 34 Y 34
  • 链游是什么?

    链游 从字面上理解它就是区块链上的游戏 xff0c 也被称作gamefi xff08 Gaming and Decentralized Finance xff09 在国内也被称为金融性游戏 在链游中玩家除了能够有玩游戏的体验之外也能够参与交
  • 出现error ‘props‘ is defined but never used 这种eslint相关的报错,关闭eslint的方法

    最近做项目遇到如下报错 xff1a cmd终端中 xff1a 为了关闭这个eslint报错 xff0c 可以用如下方法 xff1a 针对自己创建的新项目的话 xff0c 是在项目文件夹中的vue config js 中 此处项目是用Vue
  • 关于JAVA中内存溢出的解决办法

    关于JAVA中内存溢出的解决办法 J2ee应用系统是运行在J2EE应用服务器上的 xff0c 而j2ee应用服务器又是运行在JVM上的 xff0c 生成环境中JVM参数的优化和设置对于J2EE应用系统性能有着决定性的作用 要优化系统 xff
  • 用FTPClient上传文件,执行this.ftpClient.storeFile(fileName, inStream)报错

    this ftpClient storeFile fileName inStream 方法执行时无反应 xff0c 最后提示错误 原因 xff1a 代码中加了多了一个设置 this ftpClient enterLocalPassiveMo
  • Python+ADB脚本

    目录 准备工具 问题解决 xff1a 如何安装adb和python xff1f 编写程序 实现 注意 xff1a 准备工具 进入正题 xff0c 首先要准备的工具如下 1 一台正常的电脑且安装adb和python环境 2 一部安卓手机 4
  • springboot+vue+协同过滤算法电影推荐网站

    源码获取 xff1a 文末获取联系方式 xff01 一 项目运行 环境配置 xff1a Jdk1 8 43 Tomcat 8 5 43 Mysql 43 VUE 43 IDEA xff08 Eclispe MyEclispe Sts都支持
  • Ubuntu20.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(我所遇到的问题)

    写在前面 xff1a 我目前也处于学习阶段 xff0c 当时按照ROS教程安装的20 04 xff0c 随后搭建XTDrone阶段因为版本问题出现了很多问题 xff0c 这是我根据问题 xff0c 检索后汇总的一些解决措施 本文中提到的问题
  • 手机如何远程连接linux系统的VPS

    1 首先下载安装APP xff1a iTerminal 2 运行iTerminal xff0c 然后点击SSH栏 3 然后按要求填入各项内容 xff0c 确认都正确后点击底下的连接按钮 4 如图连接成功后即可在手机上操作了
  • 学习总结

    错误 xff1a TypeError ERR INVALID ARG TYPE The 34 id 34 argument must be of type string Received an instance of IncomingMes
  • Java笔记_3(循环)

    Java笔记 3 一 判断与循环1 1 顺序结构1 2 分支结构1 2 1 if语句1 2 2 switch语句 1 3 循环结构1 3 1 for循环1 3 2 while循环1 3 3 do while循环 1 4 回文数的判断1 5
  • 关于getchar的用法及实例解析

    一 getchar 函数是什么 xff1f getchar 函数是获取一个字符 说到这里就有人问了 xff0c 为什么他的返回类型是int xff1f 因为实际上EOF 61 end of file xff08 1 xff09 xff0c
  • springboot基于JAVA的电影推荐系统的开发与实现 附源码-毕业设计112306

    目 录 摘 要 4 Abstract 5 第 1 章 前 言 6 1 1 研究背景 6 1 2 研究现状 6 1 3 系统开发目标 6 第 2 章 技术与原理 8 2 1 JSP 介绍 8 2 2 JAVA 技术 8 2 3 MySQL 数
  • Python 把图片变成字符画

    34 2022 2 12 34 from PIL import Image PIL 是一个 Python 图像处理库 ascii char 61 list 64 B 8 amp WM oahkbdpqwmZO0QLCJUY123456789
  • centos shasum 未找到命令

    span class token punctuation span root 64 redis 7 106 span class token punctuation span span class token comment echo n
  • ireport的使用总结

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