Java报表学习札记之 JasperReports iReport(3)

显而易见,选择JDBC Driver并依次输入URL、Username和Password,最后点击Test,如果提示成功,那么我们的数据源就算成功创建好了,接下来就可以写报表的查询语句了。

Report Query

首先我们需要知道在哪里输入查询SQL,点击如下图标识的按钮:

之后就可以看到Query窗口了:

这里写图片描述

如上图,我们勾选Automatically Retrieve Fields之后,当我们输入完SQL语句后在下面会自动取回查询结果的所有列,同时我们在底部可以看到数据预览:

这里写图片描述

这样报表的查询SQL就算成功完成,最后我们根据列名依次把每一个放置在报表Detail 1区域的Text Field中即可。

Detail 1

没错,这个区域就是报表的主数据展示区,首先依次将Text Field拖放至Detail 1区并和列头对齐,然后设置边框,效果如下:

这里写图片描述

可以看到每个Text Field都有一个默认值$F{field},这个是什么意思呢?我们在官方文档中可以找到答案:

这里写图片描述

没错,$F是引用一个域(field)的意思,那什么又是Fields?显而易见,我们刚才写查询SQL语句返回的查询结果的每一列就是一个Field,这一点我们也可以在左侧的Inspector区中看到:

这里写图片描述

有了这些概念接下来的问题就简单了,我们只需要根据field name来一一修改每一个Text Field里的表达式即可,例如修改准考证号这一列:

这里写图片描述

下面是修改好的简单浏览一下:

这里写图片描述

有几点需要着重注意一下:

第一点也是最重要的一点在上图已经标出了,就是Detail 1区域的高度要和Text Field的行高保持一致,这样循环行生成报表的时候才会没有行间距。

所有包含中文的Text Field或Static Text都需要统一设置中文字体(STSong-Light)和中文编码(UniGB-UCS2-H (Chinese Simplified))。

由于我们没有用table组件而是用一个个的Text Field拼成的表格所以最好放大看一下边框细节和对齐细节等等:

这里写图片描述

统一设置所有Text Field和Static Text的内容对齐方式,最好是水平居中()和垂直居中(

这里写图片描述

)。

还有一个需要注意的细节就是如果SQL语句查询为空的字段如果不做处理那么默认在报表中会显示NULL,所以不太美观,但解决方案也很简单,就是将所有可能出现空值的格子(Text Field)均设置为Blank When Null,即:为null时用空格子代替:

这里写图片描述

最后应当在iReport中预览一下报表效果,点击Peview进入预览视图:

这里写图片描述


然后就可以看到我们的报表预览效果了:

这里写图片描述

整体还算完美吧!预览的同时注意一下底部的iReport output窗口,可以看到这样的提示信息:

这里写图片描述

没错,是对源文件report1.jrxml进行了编译而生成了report1.jasper文件,在JasperReports中,jrxml是源文件,而能运行的则是源文件编译后的jasper文件。我们预览的同时会自动编译,当然在编写源文件的同时我们也可以手动编译,编译按钮在这里:

这里写图片描述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/290c6cc58d623503765b3b241c5396f5.html