简介

iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。

iReport是一个能够创建复杂报表的开源项目。它100%使用Java语言编写。是目前全球最为流行的开源报表设计器。

由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。

用于打印的数据可以通过多种方式获取包括:JDBC, TableModels, JavaBeans, XML,Hibernate(支持HQL查询语言), CSV等。

它支持多种输出格式包括:PDF,RTF,XML,XLS,CSV,HTM。

安装环境

本教程环境如下,如版本不同出现与本文内容不合情况请自行百度~

版本

iReport:版本5.0.0

JDK环境:版本1.6,全名:jdk1.6.0_45,即下载jdk-6u45-windows-x64.exe

注意事项

需要本机/虚拟机的JDK环境变量设置为JDK1.6才能运行iReport,环境变量怎么设置应该不必多说了吧,忘了的可以看我这篇博文:win7/win10下的jdk的安装和环境变量的配置

环境变量配置好后如果还是打不开iReport,请重新启动电脑

楼主不才,如有错误之处,请评论必虚心改之

百度云下载地址

链接:https://pan.baidu.com/s/19sYMlephAMxgcTSKnobeTg
提取码:0u28

失效请联系楼主

基本操作

新建

1.左上角文件——》new

  • 一般选择A4纸张,而且是竖的A4,根据实际情况选择其他类型纸张大小
  • 再选择 Open this Template 打开此模板

2.对模板进行命名

  • Repoet name:模板名
  • Location:文件存放地址
  • File:模板文件全路径(Location\Repoet name.jrxml)
  • 下一步

3.finish完成新建

页面布局

1.打开模板可以看到这样的视图

  • 红框标出来的是页边距,和word中的页边距一样,是内容与纸张的距离
  • Title:标题,仅在第一页显示一次
  • Page Header:页眉,每页出现,可用于放页码,创建人等信息,值可变
  • Column Header:列头部信息,每页出现,一般不用
  • Detail:内容信息(使用重点),可添加多个Detail,控件基本上放在Detail中,它会自动根据体内的内容大小进行扩展、分页
  • Column Footer:列底部信息,每页出现,一般用于统计列数据。
  • Page Footer:页脚,每页出现,可用于放页码,创建人等信息,值可变
  • Last Page Footer:最终页脚,最后一页显示,一般用于显示编制人等信息
  • Summary:总结,最后一页显示,一般用于显示所有页面的统计

2.删除和添加页面布局

  • 可以看到上方所解释的布局在此处都有其显示,灰色的代表这个布局不启用
  • 删除布局:右键点击一个启用的布局——》Delete Band
  • 添加布局:右键点击一个可以添加的布局(一般添加Detail)——》Add Another Detail Band
  • 启用布局:右键点击一个未启用的布局——》Add Band

style样式

和前端的css一样,为了样式复用,减少繁琐的样式操作,每个样式都可以继承另一个样式,继承的样式没有本身样式的优先级高

中文支持必备

右键点击Styles——》添加一个style名为china

  • pdf font name:STSong-Light
  • Pdf Embedded:√
  • pdf Encoding:UniGB-UCS2-H
  • default style:√

比较常用的属性

  • Padding and borders:设置内边距和边框
  • Font name:字体
  • Size:字体大小
  • Horizontal Alignment:水平方向所处位置
  • Vertical Alignment:垂直方向所处位置
  • Line Spacing:行距
  • Blank when null:勾选后如果传入的数据是空的,不会显示null,而是空白

基础控件

右上角有控件列表,使用只需要拖进布局视图即可

Break:分页符

其中的Page Break 表示在此之下建立一个新的分页,相当于word的分页符

举例:

在第二页1前放一个分页符:

查看预览效果:

分页符后就是这一页的结束,分页优先级高于detail自动分页

Ellipse、Round Rectangle、Line、Rectangle:图形

四个图形控件:

  • Ellipse:椭圆
  • Round Rectangle:圆角方形
  • Line:横线
  • Rectangle:方形

都可组合其他控件,但操作过复杂,不推荐

示例:

Static Text:静态文本

静态文本,不具备自扩展能力,意思是框子有多大,显示的内容就多大,多余的内容不显示

示例:

预览:

Text Field:文本域

文本域

  • 具备自扩展能力,不管框子多大,都会完整显示
  • 具备使用数据参数能力,使用方法:$F{导入的字段名}

文本域写法:

点击属性中的Text Field Experssion可对文本域进行编辑

  • 字符串需要放到""
  • 可使用加号(+),进行字符串拼接
  • 调用Paramters:$P{参数名}
  • 调用Fields:$F{数据库字段名}
  • 调用Variables:$V{变量名}
  • 可使用基础运算,如三元运算

使用自扩展,需改变两个属性:

示例:

预览:

Image:图片

图片,可选本地文件或者网络URL,一般使用网络URL

示例:

  • Image Expression:就像文本域一样使用,可从数据库拿数据填充,放入图片URL
  • Scale Image:选择Real size或者Real height会保持原图的比例,选择Retain Shape会随着图片框的大小改变图片的大小
  • Using Cache:启用图片缓存,可以看到URl内的图片样子

预览:

Barcode:条形码

条形码,一般选取Code128条形码

  • Code Expression:就像文本域一样使用,可从数据库拿数据填充,放入条形码内容
  • Orientation:条形码方向,none就是正方向,left就是把条形码顺时针转90°,以此类推
  • Text Position:条形码内容显示,Bottom就是在条形码下方显示,None就是不显示
  • Module Width:条形码的长度,是以倍数增加的长度

示例:

table 和 subreport之后介绍

连接数据库-使用table与subreport

导入驱动

1.寻找驱动

以导入Oracle驱动为例,Mysql驱动iReport已存在

首先去能连入生产数据库的项目看看,用的是哪个版本的驱动,然后从Maven仓库中找到Oracle驱动的jar包

比如我这个版本的Oracle驱动

懒的找的童鞋去maven官网下个jar包:https://mvnrepository.com/artifact/com.oracle/ojdbc6/11.2.0.3

2.放入bin

把驱动包放到iReport的安装目录\iReport-5.0.0\bin

3.点击左上角的工具——》选项——》Classpath——》Add JAR

4.找到刚刚放入bin的驱动包添加进去,确定,驱动添加完成

创建连接

1.点击此图标

2.点击new——》Database JDBC connection

3.选择刚刚导入的oracle驱动,URL、用户名、密码自行填写

4.点击Test,连接成功则Save,失败则是某个环节出问题了

5.选择此连接,创建连接成功

编辑sql语句

有了连接,我们就需要查询数据库的sql语句了,这里分为主查询和子查询,都可要参数可不要参数

主查询

1.点击上方的按钮

2.添加sql

我连接的是本地oracle,查的表是一张测试用户表

可以点击 Read Fields 查看查询到的字段

这个sql是个全查sql且没有条件,我们给它加一个name条件

3.添加条件和其参数

name是String类型的,新建的参数也需要此类型

点击ok,完成一个带条件的主查询sql语句

4.测试主查询

主查询一般用于整体布局中的参数填入,也就是可以把刚刚查出来的那几个字段的值插入到我们设计的页面中

可以从Fields看到可以选择的字段名

用Text Field来插入字段值

预览:

因为需要传入参数,所以预览需要一个name的条件参数值

输入参数后,可得到预览页面

子查询(较难)

很多时候并不是一个主查询的一个sql语句就能查到所有想要的数值,那么可以新建多个子查询

子查询同样可以通过条件参数来查询,可以新建一个条件参数,也可以使用主查询同名的条件参数

1.新建一个dataset

一般是单数据源,所以选择创建空的dataset

2.设置sql

还是熟悉的界面,还是熟悉的操作,传入的参数名取和主查询一样的名字——name,这样只需要输入一次name的值子查询也可查询完毕

特别注意的是,记得给字段取别名,不要都叫一样的名字,不仅自己容易混淆,程序也容易出错

3.使用子查询——table

例子中的主查询返回值只有0个或1个对象,而子查询可以返回多个对象(列表),这时候可以使用table了

拖一个table到一个单独的detail中,这样detail会自适应table

选择table所用的dataset,刚刚的创建t1

选择需要显示的字段,一般全选

选择连接的数据源,一般是一个数据源,也就是创建连接中的那个数据源

如果是第一次创建table,勾上这个,会为表头\表尾、表列头\表列尾、表边框、表内容各创建一个style

表介绍

  • Table Header\Table Footer:表头\表尾
  • Column Header\Column Footer:表列头\表列尾
  • Detail:表内容

style介绍

  • table:表整体(相当于围了一圈边框)
  • table_TH:表头\表尾(第一行/最后一行)
  • table_CH:表列头\表列尾(第二行/倒二行)
  • table_TD:表内容(除此之外的行)

最终是这样展现的

终极丑有木有?明明只想要最原始的表格就好了,太花花绿绿了

删除除了有字段的所有其他行

将Table、Column Header、嵌入的Text Field、Static Text的样式全部选择为table_TD,再拉长Text Field、Static Text占据列长

此时表就创建好了,这个表是根据子查询dataset t1的数据来填入信息的,t1是需要传入一个参数的,这个参数的值我们需要去指定,右键Table——》Edit Table datasource

t1子查询需要一个name参数的值,这个值可以从输入参数(如PNAME)取,也可以自己去设定(如"cicheng"),还可以从主查询的字段值中取(如P{NAME})取,也可以自己去设定(如"cicheng"),还可以从主查询的字段值中取(如PNAME"cicheng"F{NAME})

布局:

预览:

表格这个属性记得改成这个:

可以达到没数据也可以有表头的效果

子模板subreport

相当于再新建了一个模板,但主模板包含这个子模板

子模板本身也具备所有主模板的特性,拥有主查询和子查询,层层套娃

示例暂且先鸽了,因为以上内容足以完成模板的布局与样式,之后会继续更新~

本人原创内容,如需转载,请联系一下我~

非常全面的IReport的使用相关推荐

  1. 最全面的Unity游戏开发指南视频教程 第2卷

    最全面的Unity游戏开发指南视频教程 第2卷 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小 ...

  2. B站疯传!拿走不谢!最全面的JAVA面试材料!完整版开放下载,叫我好人!

    花了3个月整理的超级全面的Java面试题,免费分享给大家 获取方式: 扫描下方公众号,回复:111 为广大Python爱好者精心准备的<Python进阶>,是<Intermediat ...

  3. 花了3个月整理的超级全面的Python资料和Java面试题,分享给大家!

    为广大Python爱好者精心准备的<Python进阶>,是<Intermediate Python>的中文译本,IntermediatePython这本书具有如下几个优点:简单 ...

  4. [你必须知道的.NET]第二十一回:认识全面的null

    <你必须知道的.NET>网站 | Anytao技术博客  [你必须知道的.NET]第二十一回:认识全面的null 发布日期:2008.7.31 作者:Anytao © 2008 Anyta ...

  5. 最新、最全面的LAMP+wordpress安装过程!!

    最新.最全面的LAMP+wordpress安装过程!! 前言:网上有好多关于LAMP+论坛.博客之类的帖子,但是写的都不是很全,而初学的用户经常为此而烦恼,因为好多版本使用的方法都有一些小的差别,导致 ...

  6. Node初学者入门,一本全面的NodeJS教程,微小的web框架,能实现文件上传功能以及数据解析功能...

    Node初学者入门,一本全面的NodeJS教程 转载于:https://www.cnblogs.com/hfultrastrong/p/8036672.html

  7. java web视频_超全面的JavaWeb视频教程

    超全面的JavaWeb视频教程 此套JavaWeb视频为非常全面的教程,适合JavaWeb爱好者自学.课程循序渐进.深入浅出,涉及到所有的知识点.学会本套教程,你就可以完全掌握到JavaWeb开发精髓 ...

  8. Linux流量监控工具 - iftop (最全面的iftop教程)

    Linux流量监控工具 - iftop (最全面的iftop教程) 2010年07月27日 下午 | 作者:VPS侦探 在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态 ...

  9. 最全面的 python 字符串拼接总结(带注释版)

    在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅. 加号连接 第一种,通过+号的形式: >>> a, b = 'hello', ' wor ...

  10. 这可能是最全面的 python 字符串拼接总结!多种方法选最优

    在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅. 加号连接 第一种,通过+号的形式: >>> a, b = 'hello', ' wor ...

最新文章

  1. Vmware ESXi 应用之还原备份的虚拟机
  2. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)
  3. Ember.js 入门指南——handlebars属性绑定
  4. SpringBoot使用@Transactional的类手动注入失败
  5. 《赛博朋克2077》是如何将人物表情和口型本地化的?
  6. do { ....} while(0) 在宏里冗余的意义
  7. Java ObjectStreamField getOffset()方法与示例
  8. codeforces 231A-C语言解题报告
  9. SpringBoot三招组合拳,手把手教你打出优雅的后端接口
  10. 评价目标检测区域的准确性——IoU
  11. mysql-5.5.38_MySQL-5.5.38通用二进制安装
  12. c语言汉字属于什么类型_C语言为什么需要定义数据类型
  13. java 错误声音播放器_JavaME 声音播放器的使用
  14. pli测试50题题库_【马士基销售代表面试】性格测试+12分钟50道题。-看准网
  15. java毕业设计中山乡村文化旅游网络平台Mybatis+系统+数据库+调试部署
  16. easyUI datagrid 遍历集合
  17. 【UE4】物理引擎(蓝图)
  18. 对话框程序, 在 OnInitDialog的最后 showWindow(SW_HIDE),不管用的原因
  19. 【Linux】uptime命令详解平均负载
  20. 用Qt搭建图书管理系统(三)

热门文章

  1. maya海龟烘焙法线_maya法线烘焙
  2. Google正式收购SketchUp
  3. 在vue项目中引入highcharts图表的方法
  4. 详解APP兼容测试点
  5. html选择器优先级如何计算,CSS选择器权重计算与优先级
  6. ArcGIS模拟3D洪水
  7. 732 我的日程安排表 III(差分思想)
  8. 5-lighttpd安装
  9. Flask 推理模型,显存一直增长。
  10. air应用接入移动mm弱联网平台