`
jy00509336
  • 浏览: 243627 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

iReport+jasperReport之BEAN数据源

阅读更多

转载自:http://www.blogjava.net/bulktree/archive/2008/12/12/245834.html

 JasperFillManager.fillReport()这个方法在使用JDBC数据源时采用一个打开的数据库连接(getConn),除此之外jasperReport给我们提供了一个JRDataSource接口,用以实现我们自己的数据源
JRDataSource接口只有两个方法

public interface JRDataSource
{
    
/**
     * 针对当前的数据源返回游标指向的下一个
元素的值,
     * 

     
*/
    
public boolean next() throws JRException;
   
/**
     * 返回游标指向的当前值
     * 

     
*/
    
public Object getFieldValue(JRField jrField) throws JRException;
}
JRBeanCollectionDataSource
此种方式是最简单的一种,查看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() {

    }


    
}


下来准备数据
Person p1 = new Person();
        p1.setAge(
"23");
        p1.setDepartment(
"ISoftStone");
        p1.setName(
"LAOSHULIN");
        p1.setPassword(
"123456789");
        p1.setPid(
"2008040516058772hj");
        p1.setSex(
"man");
既然它是一个BeanCollection我们 就来一个从conllection吧!
List<Person> list = new ArrayList<Person>();
        list.add(p1);
查看API,JRBeanCollectionDataSource的构造函数
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();
        }

    }
看看描述我们使用第一个
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;
    }

}

看看效果吧!
简简单单的几行代码就可以完成一个简单的报表,我们看到的这些工具栏图表还有窗口的一些标题啊等等都可以自己的定制哦,下来慢慢介绍!
分享到:
评论

相关推荐

    iReport+JasperReport柱状图

    本文详细介绍了使用iReport和JasperReport开发柱状图的过程,包括确定数据源类型、开发数据源类、设计图表属性等步骤。作者分享了自己的实践经验,遇到的困难和解决方法,旨在帮助读者更好地理解和掌握iReport和...

    ireport+jasperReport+Swing总结.doc

    - **配置步骤**:创建 JavaBean 类作为数据源,通过方法返回 Bean 对象列表。 #### 七、Swing 集成与展示 - **Swing 集成**:利用 Swing 组件(如 JTable 或 JList)展示报表数据。 - **报表预览**:在 Swing 界面...

    jasperReport自定义javabean数据源实例

    在JasperReport中,JavaBean可以被用作数据源,每个Bean实例代表报表中的一行数据。 要实现自定义JavaBean数据源,你需要遵循以下步骤: 1. **创建JavaBean**: 首先,你需要定义一个Java类,包含你需要在报表中...

    jasperReport +spring 的使用

    - 配置数据源、jasperReport相关的bean以及任何其他必要的配置信息。 #### 三、报表设计与数据填充 1. **报表设计** - 使用iReport工具设计报表模板,支持多种页面方向(如Portrait、Landscape)。 - 报表包含...

    JasperReport+iReport报表开发手册.pdf

    1. **数据源支持**:JasperReport支持多种数据源,包括但不限于数据库连接、Java Bean、XML文件、Java集合等。这意味着可以根据不同的应用场景选择最合适的数据源类型。 2. **报表设计灵活性**:支持设计普通报表、...

    MyEclipse iReport JasperReport Struts2.doc

    - 配置报表查询,选取JavaBean数据源并指定Bean类路径,读取Bean的属性。 - 设计报表布局,包括字段选择和样式设置。 - 编译报表,生成`.jasper`文件,这一步完成后,iReport的工作基本结束。 5. MyEclipse创建工程...

    JasperReport 学习之路

    4. **DataSource**:讲解如何在报表中使用多种数据源,包括bean数组、bean集合或自定义数据源(只需实现`JRDataSource`接口)。 5. **Fonts**:展示不同字体的应用方法。 6. **Horizontal**:演示水平分栏报表的...

    struts2整合jasperreport

    4. **生成报表**:在Action中,我们需要加载报表模板,设置数据源(通常是Action中的JavaBean集合),然后使用JasperReport API生成报表。这通常涉及以下步骤: ```java // 在ReportAction的execute方法中 Map ...

    webwork下jasperreport的subreport使用套打

    本文将深入探讨在WebWork环境下,如何使用JasperReport的子报告(subreport)功能进行套打,并以javabean作为数据源。 首先,我们需要了解什么是JasperReport的子报告。在JasperReport中,子报告是一个独立的报表...

    ireport报表制作教程

    在ireport中,我们可以将javabean类的实例作为数据源,通过字段映射,将bean的属性值绑定到报表模板的各个元素上。这样,当报表运行时,javabean中的数据会被自动填充到对应的字段中。 2. **PDF报表的制作**:...

    Struts2与Jasperreport报表结合

    5. 集成Spring和iBatis:配置Spring的ApplicationContext,定义Bean,设置数据源和SqlMapConfig。 6. 测试:通过浏览器发送请求,查看报表是否正确生成。 这个项目展示了如何在一个Java Web应用中有效地整合多种...

    springmvc 集成jasperReport.docx

    JasperReport是一款非常强大的报表生成工具,它支持多种数据源,如JDBC、XML等,并且可以输出PDF、HTML、XLS等多种格式的报表。Spring MVC则是一个基于Java的轻量级Web应用框架,用于构建可扩展的企业级应用。 ####...

    spring MVC Web应用中集成Jasper报表工具

    总结来说,Spring MVC结合JasperReports可以实现高效的数据可视化,通过自定义数据源、报表渲染和iReport设计,开发者能够创建满足业务需求的报表系统。在整个过程中,关键在于理解报表数据源的构建、报表的填充和...

    ireport基于javabean方式的主子报表demo

    在网上找了很多ireport基于...对于bean中的子报表集合数据源怎么获取,始终不成功。现经过尝试终于弄明白是怎么回事了,上传以供分享。因从事IT工作,经常下载无积分,所有收一点点积分。祝大家研究顺利,共同进步!

    japerreport lib

    它以其简洁的API、丰富的图表库以及对各种数据源的支持,成为了Java开发人员的首选报表解决方案之一。在“japerreport lib”这个压缩包中,我们看到主要包含的是JasperReport的相关库文件,这些文件是实现...

    Jasper简单使用

    - 在Java程序中加载.jasper文件,通过JasperFillManager.fillReport方法,使用JDBC数据源填充数据并生成报表。 通过以上步骤,可以有效地利用iReport进行报表设计,并结合Java程序实现报表的自动化生成。这对于...

    spring项目jasperReportDemo演示

    在Spring中,你可以创建一个Bean来封装数据源,并通过`JRDataSource`接口将其传递给报表引擎。 4. **报表的生成与导出**: 在Java代码中,你可以创建一个`JasperPrint`对象,用它来装载报表模板并填充数据。接着,...

    JasperReport集成

    JasperReport是一款开源的报表设计工具,它能够根据输入的数据源(如数据库查询结果、XML文档等)生成丰富的PDF、HTML、XLS等多种格式的报表。由于其高度可定制化的特点以及良好的扩展性,JasperReport被广泛应用于...

    SpringMVC与iReport整合开发时的PDF中文显示处理

    在`jasperReport生成PDF中文依赖包`中,可能包含`.jrxml`文件,这是iReport的报表定义文件,用于描述报表的布局和数据来源。在设计报表时,要确保字体设置支持中文,例如使用SimSun(宋体)或其他支持UTF-8编码的...

    Spring3 MVC with Japer Report Demo

    模板中可以包含静态文本、图像、表格、图表等元素,并通过填充数据源来生成实际的报表。 接下来,我们来看看如何在Spring3 MVC项目中整合JasperReport: 1. **配置依赖**:首先,在你的Maven项目中,你需要添加...

Global site tag (gtag.js) - Google Analytics