图14
十三、 在主窗体中,点击数据源下拉列表,从中选择数据源。(如
图15)
图15
十四、 编译并执行报表。报表的执行包括无数据执行和有数据执
行。 (如图15)
编译 无数据浏览 有数据浏览
图15
附注:报表设计一些技巧
1、 报表设计器属性
PDF格式:高度、宽度参数是数字30都代表1CM;
如:ColumnHeader的高度设置为5CM,此时需要设成150
EXCEL格式:高度为28.85代表1cm,宽度为30.05代表1cm。如:
ColumnHeader的高度设置为5CM,此时需要设成144。
打印条件设置
2、 new Boolean(!$F{题名}.equals(null)),是指当题名字段不为
空时打印,也可通过勾选Text Field属性中的Blank when null来实现(注:excel报表中由于线条显示是需要通过textField边框来实现,最好习惯使用Blank when null来实现字段值为空时打印空白)
3、 new Boolean($F{题名}.length() > 117) ,是指当题名字段的
长度大于117时打印
4、 new Boolean($V{REPORT_COUNT}.intValue() % 11 == 0),是
指报表的行数为11时出现,一般用于报表底部粗线的打印条件 5、 $F{起止日期}.substring(0,4),是指截取起止日期的前四位,
用截取函数时,最好加上条件,即new Boolean($F{起止日期}.length() > 4),否则如果起止日期为空时,报表就无法正常打印了,如果想从第五位开始取4位的话,$F{起止日期}.substring(4,8)
6、 new Boolean(!$F{案卷题名}.equals(null) && $F{案卷题
名}.split(\;\,是指题名内容里有四个“;”号; 7、
$F{案卷题名}.split(\;\,是指出题名的第二段
8、 new Boolean($F{案卷题名}.indexof(\;\)==-1),判断案卷题
名中是否包含\;\,若不包含返回值为-1。
9、 如报表需要按什么分组打印,可增加的一个字段group,并设
置原卷号_2;属类号_1,是指按原卷号与属类号分组打印。
10、 如果报表是复合报表,取案卷库字段用_1,取卷内库字段_2 11、 new Integer($F{文件标题}.toString().trim().length())取
文件标题的实际长度。 12、 new
Integer(Integer.parseInt($F{
案
卷
号}.toString().trim()) 把字符型转换为整型。
13、 取文件形成日期的月
1、 打印条件
new Boolean(new String($F{文件形成日期}.replaceAll( \\
2、 输出值
new Integer(new
SimpleDateFormat(\文件形成日期}.replaceAll( \
IReport介绍
什么是iReport?
iReport是一个能够创建复杂报表的开源项目,并且它能调用JasperReports库应用于任何一种java应用程序。本身是分布式的且由符合GNU通用公共许可的百分之百纯java编写。由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。
必要条件:
iReport需要Sun Java 2 SDK 1.4以上版本; 为了能编译jasper文件就必须安装完整的java2(JDK),不光是(JRE)这个运行环境。如果你还想编译iReport源代码,你还要安装Jakarta Ant version 1.6以上版本。
硬件方面,类似于java的环境,iReport也占很多的RAM,所以它也需要至少256Mb 的内存和至少20Mb的磁盘空间。
报表结构
这章我们将分析报表的构成,来观察一下它由那几部分构成,当用数据打印时这几部分是如何运转的。
Bands
一个报表依靠―type‖页来定义说明。它被分成不同水平的一份被叫做bands。当报表加入数据去打印时,这些部分被印刷很多次依照他们自身的属性(依照报表创建者设计的规则)。举个例子,page header 被重复的打印在每页的开始部分,这样的话,每个band都会重复的打印每一单一的记录。
这个 ―type‖ 页被分成9个预先确定的bands作为新组被加进去。事实上,iReport控制每一个头条(Group header)和一个摘要条(Group footer)为每一个组。