- 浏览: 90036 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Ginger90:
其实大部分功能和帆软报表差不多,但是帆软报表编写起来更方便一些 ...
iReport+jasperReport之JFreeChart(图表报表) -
tiancaishan:
这只是最简单的主数据源,那子数据源怎么设置呢?
iReport+jasperReport之CSV、XML数据源 -
wangqiangcattsoft:
楼上源码只看了一半
Struts2整合JasperReport预览HTML格式不显示图片问题解决方案 -
tuan232311009:
不错!
黑莓开发学习入门系列,自己动手实现一个日历软件(六)
iReport+jasperReport之BEAN数据源
JasperFillManager.fillReport()这个方法在使用JDBC数据源时采用一个打开的数据库连接(getConn),除此之外jasperReport给我们提供了一个JRDataSource接口,用以实现我们自己的数据源
JRDataSource接口只有两个方法
此种方式是最简单的一种,查看API我们就可以发现,JRBeanCollectionDataSource继承JRAbstractBeanDataSource类,而JRAbstractBeanDataSource是一个抽象类它间接的实现了JRDataSource这个接口,所以我们就可以不用自己去实现next()/getFieldValue()这两个方法了。
看到JRBeanCollectionDataSource这个类名大概就知道怎么用了吧!
我们的模板文件还是上篇的JDBC数据源的模板,只是没有了查询语句,手工建立所需的几个字段(域)
新建一vo对象Person.java,最基本的getter、setter方法
下来准备数据
简简单单的几行代码就可以完成一个简单的报表,我们看到的这些工具栏图表还有窗口的一些标题啊等等都可以自己的定制哦,下来慢慢介绍!
JRDataSource接口只有两个方法
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->public interface JRDataSource
{
/**
* 针对当前的数据源返回游标指向的下一个元素的值,
*
*/
public boolean next() throws JRException;
/**
* 返回游标指向的当前值
*
*/
public Object getFieldValue(JRField jrField) throws JRException;
}
JRBeanCollectionDataSource{
/**
* 针对当前的数据源返回游标指向的下一个元素的值,
*
*/
public boolean next() throws JRException;
/**
* 返回游标指向的当前值
*
*/
public Object getFieldValue(JRField jrField) throws JRException;
}
此种方式是最简单的一种,查看API我们就可以发现,JRBeanCollectionDataSource继承JRAbstractBeanDataSource类,而JRAbstractBeanDataSource是一个抽象类它间接的实现了JRDataSource这个接口,所以我们就可以不用自己去实现next()/getFieldValue()这两个方法了。
看到JRBeanCollectionDataSource这个类名大概就知道怎么用了吧!
我们的模板文件还是上篇的JDBC数据源的模板,只是没有了查询语句,手工建立所需的几个字段(域)
新建一vo对象Person.java,最基本的getter、setter方法
package org.bulktree.ireport.customdata;
/** *//**
* custom data
*
* @author bulktree Email: laoshulin@gmail.com @ Nov 7, 2008
*/
public class Person {
private String pid;
private String name;
private String sex;
private String age;
private String password;
private String department;
public Person(String pid, String name, String sex, String age, String password,
String department) {
this.pid = pid;
this.name = name;
this.sex = sex;
this.age = age;
this.password = password;
this.department = department;
}
public Person() {
}
}
/** *//**
* custom data
*
* @author bulktree Email: laoshulin@gmail.com @ Nov 7, 2008
*/
public class Person {
private String pid;
private String name;
private String sex;
private String age;
private String password;
private String department;
public Person(String pid, String name, String sex, String age, String password,
String department) {
this.pid = pid;
this.name = name;
this.sex = sex;
this.age = age;
this.password = password;
this.department = department;
}
public Person() {
}
}
下来准备数据
Person p1 = new Person();
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
既然它是一个BeanCollection我们 就来一个从conllection吧!
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
List<Person> list = new ArrayList<Person>();
list.add(p1);
查看API,JRBeanCollectionDataSource的构造函数
list.add(p1);
public JRBeanCollectionDataSource(Collection beanCollection)
{
this(beanCollection, true);
}
/** *//**
*
*/
public JRBeanCollectionDataSource(Collection beanCollection, boolean isUseFieldDescription)
{
super(isUseFieldDescription);
this.data = beanCollection;
if (this.data != null)
{
this.iterator = this.data.iterator();
}
}
看看描述我们使用第一个
{
this(beanCollection, true);
}
/** *//**
*
*/
public JRBeanCollectionDataSource(Collection beanCollection, boolean isUseFieldDescription)
{
super(isUseFieldDescription);
this.data = beanCollection;
if (this.data != null)
{
this.iterator = this.data.iterator();
}
}
JRDataSource datesource = new JRBeanCollectionDataSource(list);
这个数据源就构造完毕了,很简单吧!这样报表就可以预览了,完整的代码如下:
package org.bulktree.ireport.customdata;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
public class JasperReportDemo {
public static void main(String[] args) throws Exception {
JasperReportDemo jrd = new JasperReportDemo();
jrd.reportMethod(jrd.getMap());
}
public void reportMethod(Map map) throws Exception {
JasperReport jasperReport = null;
JasperPrint jasperPrint = null;
try {
/**//*
* File file = new File("Person.jrxml"); InputStream in = new
* FileInputStream(file); // 编译报表 jasperReport =
* JasperCompileManager.compileReport(in);
*/
// 实际中编译报表很耗时,采用Ireport编译好的报表
jasperReport = (JasperReport) JRLoader
.loadObject("D:\\workspace\\Person.jasper");
// 填充报表
jasperPrint = JasperFillManager
.fillReport(jasperReport, map, getDataSource());
// JasperExportManager.exportReportToHtmlFile(jasperPrint,
// "test.html");
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true);
} catch (JRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public Map getMap() {
Map map = new HashMap();
map.put("reportTitle", "laoshulin");
return map;
}
public JRDataSource getDataSource() throws Exception {
// 自定义数据源
Person p1 = new Person();
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
List<Person> list = new ArrayList<Person>();
list.add(p1);
JRDataSource datesource = new JRBeanCollectionDataSource(list);
return datesource;
}
}
看看效果吧!import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
public class JasperReportDemo {
public static void main(String[] args) throws Exception {
JasperReportDemo jrd = new JasperReportDemo();
jrd.reportMethod(jrd.getMap());
}
public void reportMethod(Map map) throws Exception {
JasperReport jasperReport = null;
JasperPrint jasperPrint = null;
try {
/**//*
* File file = new File("Person.jrxml"); InputStream in = new
* FileInputStream(file); // 编译报表 jasperReport =
* JasperCompileManager.compileReport(in);
*/
// 实际中编译报表很耗时,采用Ireport编译好的报表
jasperReport = (JasperReport) JRLoader
.loadObject("D:\\workspace\\Person.jasper");
// 填充报表
jasperPrint = JasperFillManager
.fillReport(jasperReport, map, getDataSource());
// JasperExportManager.exportReportToHtmlFile(jasperPrint,
// "test.html");
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true);
} catch (JRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public Map getMap() {
Map map = new HashMap();
map.put("reportTitle", "laoshulin");
return map;
}
public JRDataSource getDataSource() throws Exception {
// 自定义数据源
Person p1 = new Person();
p1.setAge("23");
p1.setDepartment("ISoftStone");
p1.setName("LAOSHULIN");
p1.setPassword("123456789");
p1.setPid("2008040516058772hj");
p1.setSex("man");
List<Person> list = new ArrayList<Person>();
list.add(p1);
JRDataSource datesource = new JRBeanCollectionDataSource(list);
return datesource;
}
}
简简单单的几行代码就可以完成一个简单的报表,我们看到的这些工具栏图表还有窗口的一些标题啊等等都可以自己的定制哦,下来慢慢介绍!
发表评论
-
如何使用Static的变量和方法
2007-12-01 10:55 711如何使用Static的变量和方法有时你希望定义一个类成员 ... -
Transact-SQL简明语法
2007-12-01 11:02 1027最简单的查询语法格式: SELECT <列名&g ... -
去北京面试时的题目(老师生日)微软面试题
2007-12-01 19:59 1181小明和小强都是张老师的学生,张老师的生日是 M月 N日, 2人 ... -
有点象24点游戏,说说你的想法
2007-12-01 23:02 753* 5、5、5、1怎么能算出24呢? * ... -
JDK5增强for循环的使用
2007-12-02 23:43 785JDK5增强for循环的使用,此语法有很大的缺陷,仅适用于有限 ... -
Java中的多态
2007-12-03 11:26 791在实际操作中,多态可以让我不用关心某个对象到底是什么具体类型, ... -
运用线程实现时间更新
2007-12-06 11:01 751线程的做的时间表,不知道合不合适,哪位还有更好的实现方式(ja ... -
生产者消费者问题(以面包为例)
2007-12-10 19:48 760package Thread;public class Pr ... -
数据库关系表解决方案
2007-12-26 21:45 739数据库关系的表之间定义一个连接,而所定义连接的方式由表之 ... -
Struts2表单请求流程(一)
2007-12-29 20:09 855Struts2框架出来有段时间了,终于开始学习Struts了, ... -
Struts2表单请求流程(二)— Struts2高级的POJO访问
2007-12-29 20:20 1935此文主要来自www.blogjava.net/Max的实例 S ... -
开源软件逐渐走进了我的生活
2008-03-18 21:58 735看看我们经常用的软件吧! 以前经常去找一些破解的软件用,没有那 ... -
Struts2中select/doubleselect标签数据显示
2008-04-02 08:46 1089最近做毕业设计用到Struts2 的标签库,遇到一些比较复 ... -
用commons-email-1.1.jar实现发邮件功能:
2008-04-07 09:47 1085今天在Apache网站上下载commons-lang j ... -
JFreeChart简单使用
2008-04-18 09:29 875JFreeChart is a free chart libr ... -
Spring2.5.3+Hibernate3.2+Struts2.0.11整合
2008-04-18 13:59 894Spring2.5.3+Hibernate3.2+Struts ... -
java截取字符串的一些常用处理
2008-08-01 09:06 957java对字符串处理功能强大,以下是本人实际开发中用到的一些总 ... -
dom4j操作xml基础
2008-08-03 15:39 960DOM是用与平台和语言无关的方式表示XML文档 ... -
office javaScript调试工具
2008-08-05 18:21 914项目前台需要写大量的js,寻求一种有效 ... -
Visitor访问者模式---------学习dom4j时遇到的顺便拿来交流
2008-08-10 12:12 917dom4j遍历xml文档树有种很特别的方式就是访问者( ...
相关推荐
本文详细介绍了使用iReport和JasperReport开发柱状图的过程,包括确定数据源类型、开发数据源类、设计图表属性等步骤。作者分享了自己的实践经验,遇到的困难和解决方法,旨在帮助读者更好地理解和掌握iReport和...
- **配置步骤**:创建 JavaBean 类作为数据源,通过方法返回 Bean 对象列表。 #### 七、Swing 集成与展示 - **Swing 集成**:利用 Swing 组件(如 JTable 或 JList)展示报表数据。 - **报表预览**:在 Swing 界面...
在JasperReport中,JavaBean可以被用作数据源,每个Bean实例代表报表中的一行数据。 要实现自定义JavaBean数据源,你需要遵循以下步骤: 1. **创建JavaBean**: 首先,你需要定义一个Java类,包含你需要在报表中...
- 配置数据源、jasperReport相关的bean以及任何其他必要的配置信息。 #### 三、报表设计与数据填充 1. **报表设计** - 使用iReport工具设计报表模板,支持多种页面方向(如Portrait、Landscape)。 - 报表包含...
1. **数据源支持**:JasperReport支持多种数据源,包括但不限于数据库连接、Java Bean、XML文件、Java集合等。这意味着可以根据不同的应用场景选择最合适的数据源类型。 2. **报表设计灵活性**:支持设计普通报表、...
- 配置报表查询,选取JavaBean数据源并指定Bean类路径,读取Bean的属性。 - 设计报表布局,包括字段选择和样式设置。 - 编译报表,生成`.jasper`文件,这一步完成后,iReport的工作基本结束。 5. MyEclipse创建工程...
4. **DataSource**:讲解如何在报表中使用多种数据源,包括bean数组、bean集合或自定义数据源(只需实现`JRDataSource`接口)。 5. **Fonts**:展示不同字体的应用方法。 6. **Horizontal**:演示水平分栏报表的...
4. **生成报表**:在Action中,我们需要加载报表模板,设置数据源(通常是Action中的JavaBean集合),然后使用JasperReport API生成报表。这通常涉及以下步骤: ```java // 在ReportAction的execute方法中 Map ...
本文将深入探讨在WebWork环境下,如何使用JasperReport的子报告(subreport)功能进行套打,并以javabean作为数据源。 首先,我们需要了解什么是JasperReport的子报告。在JasperReport中,子报告是一个独立的报表...
在ireport中,我们可以将javabean类的实例作为数据源,通过字段映射,将bean的属性值绑定到报表模板的各个元素上。这样,当报表运行时,javabean中的数据会被自动填充到对应的字段中。 2. **PDF报表的制作**:...
5. 集成Spring和iBatis:配置Spring的ApplicationContext,定义Bean,设置数据源和SqlMapConfig。 6. 测试:通过浏览器发送请求,查看报表是否正确生成。 这个项目展示了如何在一个Java Web应用中有效地整合多种...
JasperReport是一款非常强大的报表生成工具,它支持多种数据源,如JDBC、XML等,并且可以输出PDF、HTML、XLS等多种格式的报表。Spring MVC则是一个基于Java的轻量级Web应用框架,用于构建可扩展的企业级应用。 ####...
总结来说,Spring MVC结合JasperReports可以实现高效的数据可视化,通过自定义数据源、报表渲染和iReport设计,开发者能够创建满足业务需求的报表系统。在整个过程中,关键在于理解报表数据源的构建、报表的填充和...
在网上找了很多ireport基于...对于bean中的子报表集合数据源怎么获取,始终不成功。现经过尝试终于弄明白是怎么回事了,上传以供分享。因从事IT工作,经常下载无积分,所有收一点点积分。祝大家研究顺利,共同进步!
它以其简洁的API、丰富的图表库以及对各种数据源的支持,成为了Java开发人员的首选报表解决方案之一。在“japerreport lib”这个压缩包中,我们看到主要包含的是JasperReport的相关库文件,这些文件是实现...
- 在Java程序中加载.jasper文件,通过JasperFillManager.fillReport方法,使用JDBC数据源填充数据并生成报表。 通过以上步骤,可以有效地利用iReport进行报表设计,并结合Java程序实现报表的自动化生成。这对于...
在Spring中,你可以创建一个Bean来封装数据源,并通过`JRDataSource`接口将其传递给报表引擎。 4. **报表的生成与导出**: 在Java代码中,你可以创建一个`JasperPrint`对象,用它来装载报表模板并填充数据。接着,...
JasperReport是一款开源的报表设计工具,它能够根据输入的数据源(如数据库查询结果、XML文档等)生成丰富的PDF、HTML、XLS等多种格式的报表。由于其高度可定制化的特点以及良好的扩展性,JasperReport被广泛应用于...
在`jasperReport生成PDF中文依赖包`中,可能包含`.jrxml`文件,这是iReport的报表定义文件,用于描述报表的布局和数据来源。在设计报表时,要确保字体设置支持中文,例如使用SimSun(宋体)或其他支持UTF-8编码的...
模板中可以包含静态文本、图像、表格、图表等元素,并通过填充数据源来生成实际的报表。 接下来,我们来看看如何在Spring3 MVC项目中整合JasperReport: 1. **配置依赖**:首先,在你的Maven项目中,你需要添加...