iReport —— 使用 JavaBean 作为数据源
2013-08-18 21:37
411 查看
在制作报表时,想直接使用Java代码提供数据。
网上找了一些文章,很多都是用Servlet做的。我不是想通过浏览器来观察它的输出。我想使用iReport的动态连接直接预览。
结合一些资料,加上自己的摸索终于成功了。
现整理如下:
需要的环境
JDK + iReport + Eclipse + PDF Reader
如果Eclipse没有的话也没关系,iReport需要的只是Java文件编译后的class文件。
Java部分(Eclipse)
1、JavaBean
一个简单 JavaBean —— Student。
2、Factory
iReport在使用JavaBean作为数据源时需要一个Factory。主要用来生成报表数据。
3、Student的工具类
该类用来产生Student实例。主要是为了报表的数据不那么单调。
报表设计(iReport)
报表的设计部分就不多说了。
主要说一下,如何使用Java类向报表中传数据。
1、设置classpath
iReport使用JavaBean时使用的是Java的class文件。所以需要制定classpath,让iReport知道到哪去找那些class文件。
工具栏 > Options > Classpath (如果iReport是英文版本,请自己对照),出现下图的界面。
a、点击 添加文件夹 ,找到上面提到的几个Java类的class文件的路径。笔者使用的是Eclipse,而且建的是Java Project,所以笔者的路径是 $workspace\$projectName\bin 。
b、点击 Save Classpath 。
(注:设置完成后,请重启iReport。有时在视图上的修改不能及时显示,可以多试几次。还是显示不出来,重启吧!不知道是不是iReport的bug。笔者使用的版本是2.0.1)
![](http://1864.img.pp.sohu.com.cn/images/blog/2012/8/3/15/17/e35262583_139aec72218g2_blog.jpg)
2、设置数据源
工具栏 > Data > 连接/资料来源 。
在弹出的界面中,点击 New 按钮。
在接下来弹出的界面中,选中 JavaBeans set data source ,点击 Next 。
出现如下图的界面。
a、Name ,给你的datasource取个名字,例如:MyJavaBeanTest
b、Factory class ,就是上面的工厂类,包括包名和Java文件名
c、method ,工厂类里的那个静态方法。注意方法名要对应。名字可以任取。
![](http://1832.img.pp.sohu.com.cn/images/blog/2012/8/3/15/16/e35262583_139aeab6255g85_blog.jpg)
3、向报表填充值
工具栏 > Data > 报表查询 ,出现如下界面。
a、选中 JavaBean Data Source 选项卡。
b、在 Class name 栏里,填入JavaBean类,包括包名和Java文件名。
c、点击 Read attributes 。可以看到下面的栏里显示出了JavaBean的属性。
d、选中相关属性,点击 Add Selected Field(s) 。
e、点击 OK 。
![](http://1864.img.pp.sohu.com.cn/images/blog/2012/8/3/15/0/e35262583_139aeb76f7dg86_blog.jpg)
经历过上面的步骤,可以看到在你的报表文件的视图中,Fields栏里多了刚刚加上的属性。
![](http://1804.img.pp.sohu.com.cn/images/blog/2012/8/3/16/7/e35262583_139aed9ef19g2_blog.jpg)
将各属性拖放到相应的位置。如图。
![](http://1852.img.pp.sohu.com.cn/images/blog/2012/8/3/16/7/e35262583_139aed9826eg85_blog.jpg)
好了。看看效果吧!
在菜单栏里,点击 执行报表(使用动态连结),如图。
如果配置了多个数据源的话,请注意动态连结的数据源是否正确。
![](http://1864.img.pp.sohu.com.cn/images/blog/2012/8/3/16/12/e35262583_139aede33eag86_blog.jpg)
预览效果如下:
![](http://1804.img.pp.sohu.com.cn/images/blog/2012/8/3/16/16/e35262583_139aee26404g2_blog.jpg)
P.S. 其中的Java源代码和iReport的报表文件(jrxml)已打包上传到网上。有兴趣的可以看看。
下载地址:http://download.csdn.net/detail/zhuyang7654321/4475107
网上找了一些文章,很多都是用Servlet做的。我不是想通过浏览器来观察它的输出。我想使用iReport的动态连接直接预览。
结合一些资料,加上自己的摸索终于成功了。
现整理如下:
需要的环境
JDK + iReport + Eclipse + PDF Reader
如果Eclipse没有的话也没关系,iReport需要的只是Java文件编译后的class文件。
Java部分(Eclipse)
1、JavaBean
一个简单 JavaBean —— Student。
package ds.javabean; /** * * * @author by Young.ZHU * on 2012-8-3 * * Package&FileName: ds.javabean.Student */ public class Student { //~ Instance fields ******************************************************** // 序号 private int id; // 姓名 private String name; // 性别 private String gender; // 出生年月 private String birthday; //~ Constructors *********************************************************** public Student() { } public Student(int id, String name, String gender, String birthday) { this.id = id; this.name = name; this.gender = gender; this.birthday = birthday; } //~ Methods **************************************************************** public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } }
2、Factory
iReport在使用JavaBean作为数据源时需要一个Factory。主要用来生成报表数据。
package ds.javabean; import java.util.ArrayList; import java.util.Collection; /** * 生成JavaBean的工厂类。 * 在iReport的DataSource的配置中会用到。 * * @author by Young.ZHU * on 2012-8-3 * * Package&FileName: ds.javabean.StudentFactory */ public class StudentFactory { //~ Static fields/initializers ********************************************* // 生成实体对象的个数 private static final int RECORD_COUNT = 100; //~ Methods **************************************************************** /** * 这个方法在iReport的DataResource配置时也会用到 * 必须是静态方法 static * * @return */ public static Collection<Student> createBeanCollection() { Collection<Student> beanCollection = new ArrayList<Student>(); for (int i = 0; i < RECORD_COUNT; i++) { beanCollection.add(StudentUtil.createStudent(i + 1)); } return beanCollection; } }
3、Student的工具类
该类用来产生Student实例。主要是为了报表的数据不那么单调。
package ds.javabean; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; /** * 随机生成Student实体对象的工具类 * * @author by Young.ZHU * on 2012-8-3 * * Package&FileName: ds.javabean.StudentUtil */ public class StudentUtil { //~ Static fields/initializers ********************************************* /* * “姓”的字符数组 */ private static String[] FIRST_NAME_ARR = { "赵", "钱", "孙", "李", "王", "张", "慕容", "上官", "东方", "朱" }; /* * 其他中文数组 */ private static String[] LAST_NAME_ARR = { "燕", "岩", "艳", "明", "建国", "小刚", "小娟", "华", "天明", "洋", "盈盈", "仁" }; /* * 性别 */ private static String[] GENDER_ARR = { "男", "女" }; private static DateFormat DATE_FORMATER = new SimpleDateFormat( "yyyy年MM月dd日"); //~ Methods **************************************************************** public static Student createStudent(int id) { String firstName = getRandomCharFromArray(FIRST_NAME_ARR); String lastName = getRandomCharFromArray(LAST_NAME_ARR); String name = firstName + lastName; String gender = GENDER_ARR[new Random().nextInt(1000) % 2]; String birthday = getRandomDate(); return new Student(id, name, gender, birthday); } private static String getRandomCharFromArray(String[] arr) { Random random = new Random(); int index = random.nextInt(arr.length); return arr[index]; } /** * 随机生成一个比当前日期小的日期 * * @return (yyyy年MM月dd日) */ private static String getRandomDate() { Date date = new Date(); long dateMill = date.getTime(); Random random = new Random(); dateMill = (long) (random.nextDouble() * dateMill); return DATE_FORMATER.format(new Date(dateMill)); } }
报表设计(iReport)
报表的设计部分就不多说了。
主要说一下,如何使用Java类向报表中传数据。
1、设置classpath
iReport使用JavaBean时使用的是Java的class文件。所以需要制定classpath,让iReport知道到哪去找那些class文件。
工具栏 > Options > Classpath (如果iReport是英文版本,请自己对照),出现下图的界面。
a、点击 添加文件夹 ,找到上面提到的几个Java类的class文件的路径。笔者使用的是Eclipse,而且建的是Java Project,所以笔者的路径是 $workspace\$projectName\bin 。
b、点击 Save Classpath 。
(注:设置完成后,请重启iReport。有时在视图上的修改不能及时显示,可以多试几次。还是显示不出来,重启吧!不知道是不是iReport的bug。笔者使用的版本是2.0.1)
![](http://1864.img.pp.sohu.com.cn/images/blog/2012/8/3/15/17/e35262583_139aec72218g2_blog.jpg)
2、设置数据源
工具栏 > Data > 连接/资料来源 。
在弹出的界面中,点击 New 按钮。
在接下来弹出的界面中,选中 JavaBeans set data source ,点击 Next 。
出现如下图的界面。
a、Name ,给你的datasource取个名字,例如:MyJavaBeanTest
b、Factory class ,就是上面的工厂类,包括包名和Java文件名
c、method ,工厂类里的那个静态方法。注意方法名要对应。名字可以任取。
![](http://1832.img.pp.sohu.com.cn/images/blog/2012/8/3/15/16/e35262583_139aeab6255g85_blog.jpg)
3、向报表填充值
工具栏 > Data > 报表查询 ,出现如下界面。
a、选中 JavaBean Data Source 选项卡。
b、在 Class name 栏里,填入JavaBean类,包括包名和Java文件名。
c、点击 Read attributes 。可以看到下面的栏里显示出了JavaBean的属性。
d、选中相关属性,点击 Add Selected Field(s) 。
e、点击 OK 。
![](http://1864.img.pp.sohu.com.cn/images/blog/2012/8/3/15/0/e35262583_139aeb76f7dg86_blog.jpg)
经历过上面的步骤,可以看到在你的报表文件的视图中,Fields栏里多了刚刚加上的属性。
![](http://1804.img.pp.sohu.com.cn/images/blog/2012/8/3/16/7/e35262583_139aed9ef19g2_blog.jpg)
将各属性拖放到相应的位置。如图。
![](http://1852.img.pp.sohu.com.cn/images/blog/2012/8/3/16/7/e35262583_139aed9826eg85_blog.jpg)
好了。看看效果吧!
在菜单栏里,点击 执行报表(使用动态连结),如图。
如果配置了多个数据源的话,请注意动态连结的数据源是否正确。
![](http://1864.img.pp.sohu.com.cn/images/blog/2012/8/3/16/12/e35262583_139aede33eag86_blog.jpg)
预览效果如下:
![](http://1804.img.pp.sohu.com.cn/images/blog/2012/8/3/16/16/e35262583_139aee26404g2_blog.jpg)
P.S. 其中的Java源代码和iReport的报表文件(jrxml)已打包上传到网上。有兴趣的可以看看。
下载地址:http://download.csdn.net/detail/zhuyang7654321/4475107
相关文章推荐
- ireport使用javabean作为数据源的实现
- ireport+jasperreport开源报表中使用javabean作为数据源的详细实现过程
- iReport 使用JavaBean作为数据源开发报表(SSM)
- Java开源报表JasperReport、iReport4.5.1使用详解(四)-JavaBean数据源
- iReport 笔记(三) 使用JavaBean集合作为数据源 【转】
- iReport 笔记(三) 使用JavaBean集合作为数据源
- iReport 笔记(四) 使用JDBC作为数据源 【转】
- Ireport使用子报表(使用JavaBean集合作为数据源)
- iReport使用javabean做数据源
- 图示ireport中使用javabean作数据源开发基于jasperreports报表过程
- ireport 中使用javabean 作数据源开发
- iReport 笔记(四) 使用JDBC作为数据源
- iReport 笔记(六) 使用子报表(使用JavaBean集合作为数据源) 【转】
- jasperreport制作报表(二)使用JavaBean封装成List作为数据源
- iReport 笔记(六) 使用子报表(使用JavaBean集合作为数据源)
- Jasper+ireport动态报表学习(二)使用数据库作为数据源进行报表绘制
- iReport 笔记(六) 使用子报表(使用JavaBean集合作为数据源)
- Java开源报表JasperReport、iReport4.5.1使用详解(四)-JavaBean数据源
- iReport 笔记(三) 使用JavaBean集合作为数据源
- iReport 笔记(四) 使用JDBC作为数据源