iReport报表开发
来源:互联网 发布:polycom软件下载 编辑:程序博客网 时间:2024/05/21 01:55
说明:制作像这样的报表
编号:2016030277777003
中华人民共和国预防健康检查用表
从业人员健康检查表
体检日期:2016-03-02
单位:xxxxxx 单位性质:个体
姓名:张三 性别:男 年龄:xx 民族:汉 文化程度:大学
工种:餐饮服务 工龄:2
体检项目
体检结果
体检师签名
肝功能
谷丙转氨酶
阴性
李四
HBsAg
阴性
李四
HBeAg
阴性
李四
HCV-Ab
阴性
李四
其他
体检不合格
主检医师签名:
年 月 日
卫生监督机构意见
年 月 日
请阅读……..
1. 环境搭建
1.1软件下载
截止20160302日,最新的版本为:iReport-5.6.0-windows-installer.exe
下载地址:http://pan.baidu.com/s/1eRr6jg2
这是我从官方网站下载德windows安装版本。
1.2java环境
如果启动出现java.exe找不到,有可能java jdk没有安装,或者环境变量没有配置,再或者环境变量配置不对,注意%JAVA_HOME% 是jdk的根目录,我的是D:\JavaDE\Java\jdk1.7.0_71。
1.3 iReport-5.6.0安装
安装就是Next,不用说了,简单。
1.3.1安装目录
安装后的目录是:
1.3.2 iReport简单说明
iReport 是为JasperReportsLibrary和JasperReports Server设计的报表可视化设计器。
JasperReports 就是解决我们报表问题的一些jar包,其实我们可以直接使用JasperReports就可以开发我们需要的报表,但是因为JasperReports开发需要模板文件,比如:.jasper文件、.jrxml文件,这就是模板文件,JasperReports调用这些文件并传入我们的javaBean、或者变量,List等数据就能够打印想要的报表。
所以iReport工具就是制作模板文件的一个工具,当然iReport还有很多功能。
再看第一句话说:iReport JasperReports可视化设计器,所以iReport会用到JasperReports的jar包,在iReport的安装目录
iReport-5.6.0\ireport\modules\ext
下可以看到jasperreports-5.6.0.jar等包。
以后我们做的测试列子,为了方便,就直接导入iReport-5.6.0\ireport\modules\ext下的所以jar包。
2iReport的常识
上面说了,ireport就是制作jasperreports需要的模板,也就是jasperreports的参数配置文件吧,这样理解,jasperreports生成报表时就使用这个配置文件去生成需要的报表。
这是软件菜单栏:
文件->new,跳出窗口:
按照1、2、3操作,然后接着窗口:
下一步:
下一步:
下一步:
模板分组,默认,下一步:
完成创建。
在路径D:\JasperReport\jrxml下(这个创建时选择的路径,目的只是存放模板文件)就看到:
2.2软件界面说明
图太小,你可以复制出去查看比较大一点。
2.2.1导航栏介绍
2.2.2控件工具
2.2.3视图区
2.3数据源
这是非常重要的一项,没有数据源,就是相当于没有变量,相当于死页面,死模板,没有意义。
打开,如下:截图头部
1. 通过连接数据库查询Report query
2. Javabean 形式
3. CSV
4. Excel
5. 其他。
下面我们的实例的数据源是使用javabean的形式。
3. javaBean数据源实例
3.1报表需求
制作有关体检的报告表,如下:
编号:2016030277777003
中华人民共和国预防健康检查用表
从业人员健康检查表
体检日期:2016-03-02
单位:xxxxxx 单位性质:个体
姓名:张三 性别:男 年龄:xx 民族:汉 文化程度:大学
工种:餐饮服务 工龄:2
体检项目
体检结果
体检师签名
肝功能
谷丙转氨酶
阴性
李四
HBsAg
阴性
李四
HBeAg
阴性
李四
HCV-Ab
阴性
李四
其他
体检不合格
主检医师签名:
年 月 日
卫生监督机构意见
年 月 日
3.2探索过程
看到以上的报表后,我就这么想,表内体检项目做一个PointBean类,表内的体检项目信息是动态的,所以报表类ReportBean 应该包括表头信息和List<PointBean>。
这样确定后,我用了Table去画,但是Table的单元格合并是个问题,关于使用Table组件的资料地址:
http://www.doc88.com/p-6661631235169.html
因为Table的单元格合并的问题解决不了,所以我另寻找方法,看到了一篇救命文章,如下:
http://blog.csdn.net/yxue1118/article/details/49912291
整个设计用了三个组件,分别是line、Static Text和Text Field,设计如下:
下载.jrxml文件:http://pan.baidu.com/s/1jGQu94i
3.3设计技巧
参考文章:http://blog.csdn.net/yxue1118/article/details/49912291
3.3.1 Detail band区设计
(1) 对需要合并的 Text Field 组件属性编辑
这里是$F{itemName}的属性
Stretch type选择Relative to tallestobject或者Relative to band height
print repeated values 不要勾选,置为false。
(2)对需要合并的Text Field边框设置
合并的Text Field只需要添加上边框。
你可以切换到XML
在对应的Text Field元素里加上以下xml
<box>
<topPenlineWidth="1.0"/>
<leftPenlineWidth="0.0"/>
<bottomPenlineWidth="0.0"/>
<rightPenlineWidth="0.0"/>
</box>
其他的属性添加完整的边框。
<box>
<topPenlineWidth="1.0"/>
<leftPenlineWidth="1.0"/>
<bottomPenlineWidth="1.0"/>
<rightPenlineWidth="1.0"/>
</box>
需要合并的Text Field左右边框用line填充。
3.3.2 column footer band区设计
往column footer band 中添加一条线,与需求的表格宽度调节一致,并置于band的顶端
当然,前提detail band 中的元素与band 的高度调节一致,做到占满整个band
属性是:
print repeated values 勾选。
3.3.3整个模板
属性:
float column footer需要勾选,这样生成的报表每页detail band 中的内容会自动与column footer band中的那根线连接起来,形成完整的表格。
3.4中文处理
凡Static Text组件和Text Field组件,用到中文就做中文处理,否则很有可能不显示。
3.5 关于null的问题
浏览 Preview
如果Bean有些值为空,那么就出现NULL,所以要在TextField的属性Text Field Expression中加入判断,例如:($F{myField}==null) ? "":$F{myField}。
加上表达式知道就没有NULL了
3.6 Text File 和Static Text 文本居中
属性设计:
3.7源代码
下载:http://pan.baidu.com/s/1c0RSEVA
- iReport+JasperReport报表开发
- Web报表开发:ireport
- iReport报表开发
- ireport报表开发总结
- struts2+ireport进行报表开发
- 【报表开发】iReport使用心得
- 【报表开发】iReport使用心得
- 利用JasperReport+iReport进行Web报表开发
- JasperReport+iReport进行java报表开发
- 《iReport-Jasperreport报表开发指南》完成
- 利用JasperReport+iReport进行Web报表开发
- 利用JasperReport+iReport进行Web报表开发
- 利用JasperReport+iReport进行Web报表开发
- 利用JasperReport+iReport进行Web报表开发
- iReport+JasperReports报表开发入门篇
- ireport+jasperreports报表开发总结一(Struts2)
- 使用JasperReport与iReport开发报表
- JasperReport+iReport进行Web报表开发
- RxJava操作符(一)Creating Observables
- Genymotion安装与集成开发指南
- 浙大PAT甲级 1106 广度优先搜索
- VT系列二:检测是否支持虚拟化
- 设置EditText 游标的位置
- iReport报表开发
- RxJava操作符(二)Transforming Observables
- Cassandra入门
- 浅析递推(递推专练题解)
- Android实现网络图片app
- 版本控制——git的一些基本命令杂录(一)
- 一个有趣的问题:可以输出自己的源程序代码(quine)
- RxJava操作符(三)Filtering
- 1009. Product of Polynomials (25)