说明:制作像这样的报表
编号:2016030277777003
中华人民共和国预防健康检查用表
从业人员健康检查表
体检日期:2016-03-02
单位:xxxxxx 单位性质:个体
姓名:张三 性别:男 年龄:xx 民族:汉 文化程度:大学
工种:餐饮服务 工龄:2
体检项目 |
体检结果 |
体检师签名 |
|
肝功能 |
谷丙转氨酶 |
阴性 |
李四 |
HBsAg |
阴性 |
李四 |
|
HBeAg |
阴性 |
李四 |
|
HCV-Ab |
阴性 |
李四 |
|
其他 |
|||
体检不合格
主检医师签名:
年 月 日 |
卫生监督机构意见
年 月 日 |
请阅读……..
截止20160302日,最新的版本为:iReport-5.6.0-windows-installer.exe
下载地址:http://pan.baidu.com/s/1eRr6jg2
这是我从官方网站下载德windows安装版本。
如果启动出现java.exe找不到,有可能java jdk没有安装,或者环境变量没有配置,再或者环境变量配置不对,注意%JAVA_HOME% 是jdk的根目录,我的是D:\JavaDE\Java\jdk1.7.0_71。
安装就是Next,不用说了,简单。
安装后的目录是:
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包。
上面说了,ireport就是制作jasperreports需要的模板,也就是jasperreports的参数配置文件吧,这样理解,jasperreports生成报表时就使用这个配置文件去生成需要的报表。
这是软件菜单栏:
文件->new,跳出窗口:
按照1、2、3操作,然后接着窗口:
下一步:
下一步:
下一步:
模板分组,默认,下一步:
完成创建。
在路径D:\JasperReport\jrxml下(这个创建时选择的路径,目的只是存放模板文件)就看到:
图太小,你可以复制出去查看比较大一点。
这是非常重要的一项,没有数据源,就是相当于没有变量,相当于死页面,死模板,没有意义。
打开,如下:截图头部
1. 通过连接数据库查询Report query
2. Javabean 形式
3. CSV
4. Excel
5. 其他。
下面我们的实例的数据源是使用javabean的形式。
制作有关体检的报告表,如下:
编号:2016030277777003
中华人民共和国预防健康检查用表
从业人员健康检查表
体检日期:2016-03-02
单位:xxxxxx 单位性质:个体
姓名:张三 性别:男 年龄:xx 民族:汉 文化程度:大学
工种:餐饮服务 工龄:2
体检项目 |
体检结果 |
体检师签名 |
|
肝功能 |
谷丙转氨酶 |
阴性 |
李四 |
HBsAg |
阴性 |
李四 |
|
HBeAg |
阴性 |
李四 |
|
HCV-Ab |
阴性 |
李四 |
|
其他 |
|||
体检不合格
主检医师签名:
年 月 日 |
卫生监督机构意见
年 月 日 |
看到以上的报表后,我就这么想,表内体检项目做一个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,设计如下:
下载.jrxml文件:http://pan.baidu.com/s/1jGQu94i
参考文章:http://blog.csdn.net/yxue1118/article/details/49912291
(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填充。
往column footer band 中添加一条线,与需求的表格宽度调节一致,并置于band的顶端
当然,前提detail band 中的元素与band 的高度调节一致,做到占满整个band
属性是:
print repeated values 勾选。
属性:
float column footer需要勾选,这样生成的报表每页detail band 中的内容会自动与column footer band中的那根线连接起来,形成完整的表格。
凡Static Text组件和Text Field组件,用到中文就做中文处理,否则很有可能不显示。
浏览 Preview
如果Bean有些值为空,那么就出现NULL,所以要在TextField的属性Text Field Expression中加入判断,例如:($F{myField}==null) ? "":$F{myField}。
加上表达式知道就没有NULL了
属性设计:
下载:http://pan.baidu.com/s/1c0RSEVA