1.去
http://jasperforge.org/jaspersof ... telligence/ireport/下载最新版本的iReport,我用的是iReport-2.0.1。下载完毕后安装;
2 在自己的项目中建立两个类(我用的是jdk1.6)com.lan.myApp.test.factory.JavaBeanDataSourceFactory类和com.lan.myApp.domain.Person。第一个类是datasource第二个类是要打印的实体;
其中 Person中有如下几个属性,及其相应的get和set方法
private long id;
private String name;
private int age;
private String sex;
在JavaBeanDataSourceFactory类中建立一个方法 public static Collection<Person> createPersonCollection(),在方法里面写数据库的检索语句,这里可以做一些模拟数据,比如:
public static Collection<Person> createPersonCollection(){
Person p1 = new Person();
p1.setId(1);
p1.setName("张三");
p1.setSex("男");
p1.setAge(20);
Person p2 = new Person();
p2.setId(2);
p2.setName("张四");
p2.setSex("女");
p2.setAge(21);
List<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);
return list;
}
3.打开ireport设计器,设定classpath,Options--Classpath--添加文件夹,这里我的classpath是:D:/example/myApp/WebRoot/WEB-INF/classes,点击“Save Classpath”,重启ireport;
4.新建datasource,data--链接/资料来源--new,这里新建JavaBeans set data source,起名为:testDatasource,Factory class为:com.lan.myApp.test.factory.JavaBeanDataSourceFactory,下面默认Collection of javaBeans,再下面填上JavaBeanDataSourceFactory类中返回数据集的方法createPersonCollection,点击下面的“Test”,提示:Connection test successful!,如果没有成功,请检查classpath是否设置正确;
5.创建报表,档案--开启新档,起名字person,然后点击ok;注意如果打不开新档,用ireport.bat打开设计器,创建报表时如果提示java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester错误,可能是在jre的lib/ext目录下放置了jasperreport.jar和ireport自带的冲突导致的,删掉后重启ireport;
6.导入Person,点击图标栏的显示比例下拉框左边的database图标,选择JavaBean Data Source,在下面Class Name中录入Person的类:com.lan.myApp.domain.Person,点击Read attribute,然后选择相应属性add上去,ok;
6.在报表展示区把除了columnHeader和detail的所有区域的Band Height都设置成0,右键--栏的属性,改一个点击一下apply;
7.在column header中增加列标题staticText(不会变动的文字)分别为:姓名、年龄、性别;把detail的高度改成30,增加对应的textField(文字字段元),修改textField的属性中的Text Field标签页,其中Class为相应的类型(String、Integer、String),Expression为$F{name}、$F{age}、$F{sex},利用设计器对齐各个元素,注意不能超出自己所在的栏,然后在 属性--border中增加边框;
8.点击图标栏最右边的“执行报表(使用动态链接)”来执行报表,结束。
以上实现的只是一个简单的例子,更复杂的功能和界面的操作布局只有咱们来实践了,在网站上也有很多例子,用jasperreport做一些简单的报表还是很不错的选择,但是有些报表不太适合一些业务需要,比如分组报表,其分组的展现方式和我们平时看到的报表不太一样,看着有些别扭