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 是为JasperReportsLibraryJasperReports 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,跳出窗口:


按照123操作,然后接着窗口:


下一步:


下一步:


下一步:


模板分组,默认,下一步:




完成创建。

在路径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



0 0