iReport报表开发

说明:制作像这样的报表

编号: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安装目录

安装后的目录是:

iReport报表开发_第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,跳出窗口:

iReport报表开发_第2张图片

 

 

 

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

iReport报表开发_第3张图片

 

 

 

下一步:

iReport报表开发_第4张图片

 

下一步:

iReport报表开发_第5张图片

 

 

 

下一步:

iReport报表开发_第6张图片

 

 

 

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

 

 

iReport报表开发_第7张图片

 

完成创建。

在路径D:\JasperReport\jrxml下(这个创建时选择的路径,目的只是存放模板文件)就看到:

 

 

 

2.2软件界面说明

iReport报表开发_第8张图片

 

 

 

 

图太小,你可以复制出去查看比较大一点。

2.2.1导航栏介绍

iReport报表开发_第9张图片
 

2.2.2控件工具

iReport报表开发_第10张图片

 

 

 

2.2.3视图区

iReport报表开发_第11张图片
 

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

这样确定后,我用了Table去画,但是Table的单元格合并是个问题,关于使用Table组件的资料地址:

http://www.doc88.com/p-6661631235169.html

因为Table的单元格合并的问题解决不了,所以我另寻找方法,看到了一篇救命文章,如下:

http://blog.csdn.net/yxue1118/article/details/49912291
整个设计用了三个组件,分别是line、Static Text和Text Field,设计如下:

iReport报表开发_第12张图片

 

 

 

下载.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

        

        

        

        

其他的属性添加完整的边框。

        

        

        

        

需要合并的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组件,用到中文就做中文处理,否则很有可能不显示。

iReport报表开发_第13张图片

 

 

 

 

3.5 关于null的问题

 

浏览 Preview

iReport报表开发_第14张图片

 

如果Bean有些值为空,那么就出现NULL,所以要在TextField的属性Text Field Expression中加入判断,例如:($F{myField}==null) ? "":$F{myField}。

加上表达式知道就没有NULL了

iReport报表开发_第15张图片

 

 

 

3.6 Text File 和Static Text 文本居中

属性设计:

 

 

 

3.7源代码

 

下载:http://pan.baidu.com/s/1c0RSEVA

 

 

 

你可能感兴趣的:(java)