`
tanglei198577
  • 浏览: 60419 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

ireport using javabean as the datasource

    博客分类:
  • java
阅读更多

转自:http://hi.baidu.com/nieweiguo/blog/item/b92e369bf0c882b6c8eaf476.html

步骤如下:
首先在ireprot里做好所需要报表,保存
   

 

 

ireport里面的字段就是你要传入到jasper里的list所封装的model的字段,一一对应即可,
  
ireport里面要设置报表字段(如果要传参数到报表里,则要在ireport设置报表参数)
   ,
做好报表后,就在后台ACTION(自己可以在JSP,SERVLET 封装等...)封装数据了,我做了个测试片段如下:
List list=new ArrayList();
   for(int i=0;i<50;i++)
   {
    Account accout =new Account();
    accout.setId(new Integer(i));
    accout.setEmail("
邮箱youxiang"+i);
    accout.setLogin("
登录名
denglu"+i);
    accout.setName("
姓名
xingm"+i);
    accout.setPassword("
密码
mima"+i);
    accout.setType("
类型
leixing"+i);
    list.add(accout);
   }
   request.setAttribute("list",list);
   request.setAttribute("test", "anie
测试
test");
    return mapping.findForward("baobiao");
ACCOUNT MODEL
就是你要显示在报表中的类型

  
接着就转发到baobiao.jsp页面了,此页面的代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.util.List"%>

<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.util.*" %>
<%@ page import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.List"%>

<%
//
获取过滤信息

String outputType = (String)request.getAttribute("outputType");
List list=(List)request.getAttribute("list");
String test = (String)request.getAttribute("test");
%>
<%
//
下面两句 意思是ireport的报表XML文件在程序中动态编译成.jasper文件。注释掉就是指定了.jasper文件
//String path=application.getRealPath("/file");
//JasperCompileManager.compileReportToFile(path+"/anietest.jrxml",path+"/anietest.jasper");

File reportFile;
reportFile= new File(application.getRealPath("/file/anietest.jasper"));
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());

Map parameters = new HashMap();

parameters.put("test",test);

//
为数据源设置参数

//outputType="EXCEL";

if("HTML".equals(outputType))
{
System.out.println(outputType);
   JasperPrint jasperPrint =
   JasperFillManager.fillReport(
    jasperReport,
    parameters,
    new JRBeanCollectionDataSource(list)
    );

JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE) ;  
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE) ;  
exporter.exportReport();
}
else if("PDF".equals(outputType))
{
System.out.println(outputType);
   byte[] bytes =
   JasperRunManager.runReportToPdf(
    reportFile.getPath(),
    parameters,
    new JRBeanCollectionDataSource(list)
    );

      String fileName = "
阿聂TEST.pdf";
    fileName=java.net.URLEncoder.encode(fileName,"utf-8");
    response.setContentType("application/download");
    response.setHeader("Content-Disposition", "attachment; filename="+fileName);
    response.setContentLength(bytes.length);
    ServletOutputStream ouputStream = response.getOutputStream();
    ouputStream.write(bytes, 0, bytes.length);
    ouputStream.flush();
    ouputStream.close();
    //PDF
EXCEL需要此句,要不然会报错 HTML不需要

    out.clear();
    out=pageContext.pushBody();
}
else if("EXCEL".equals(outputType)){
System.out.println(outputType);
   JasperPrint jasperPrint = JasperFillManager.fillReport(
     reportFile.getPath(),
     parameters,
     new JRBeanCollectionDataSource(list)
     );
    
     

     response.setContentType("application/vnd.ms-excel");

    
      
              JRXlsExporter exporter = new JRXlsExporter();
      byte[] bytes;
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
    
              exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
              exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
     exporter.exportReport();

     bytes = baos.toByteArray();

     if (bytes != null && bytes.length > 0) {
               response.reset();
                 String fileName = "
阿聂TEST.xls";
    fileName=java.net.URLEncoder.encode(fileName,"utf-8");
    response.setContentType("application/download");
    response.setHeader("Content-Disposition", "attachment; filename="+fileName);
            
             response.setContentLength(bytes.length);
               ServletOutputStream ouputStream = response.getOutputStream();
               ouputStream.write(bytes, 0, bytes.length);
               ouputStream.flush();
               ouputStream.close();
               //PDF
EXCEL需要此句,要不然会报错 HTML不需要

       out.clear();
       out=pageContext.pushBody();
}

}


%>

里面有写些需要改写地方,请慢慢参考吧,很简单,其中
Map parameters = new HashMap();

parameters.put("test",test);  
这句是要设置在报表里的参数,通过放入MAP中然后
传给jasper报表输出 代码如下:JasperPrint jasperPrint = JasperFillManager.fillReport(
     reportFile.getPath(),
     parameters,
     new JRBeanCollectionDataSource(list)
     );
基本主要代码就是以上了,然后说一下需要的包,基本就是只需要这几个包就行了。测试成功,饼形报表跟柱形

报表慢慢研究中

分享到:
评论
1 楼 insheng1990 2012-06-19  
多谢楼主,学习了。

相关推荐

    ireport+javabean实现可视化报表

    `ireport`和`jasperreports`是两个广泛使用的开源工具,它们允许开发者创建复杂的、动态的报表,而`javabean`则是Java编程中用于封装数据的对象。在这个“ireport+javabean实现可视化报表”的项目中,我们将深入探讨...

    Ireport报表javabean使用教程

    ireport java sql 报表 javabean与 ireport结合使用

    ireport+ javaBean 做数据源实例

    【标题】:“ireport+ javaBean 做数据源实例” 在Java开发中,报表的生成是一项常见的需求,用于展示和分析数据。ireport是一款基于Java的开源报表工具,它允许开发者通过简单的XML模板设计复杂的报表,并能方便地...

    ireport利用javabean做数据源.docx

    【ireport利用javabean做数据源】 在Java开发中,ireport是一个强大的报表工具,它允许开发者设计复杂的报表,并且能够与各种数据源进行交互。在这个场景中,我们将讨论如何利用javabean作为ireport的数据源来生成...

    ireport+javabean

    3. iReport导入数据源:在iReport设计工具中导入刚才创建的JavaBean类,作为数据源。 4. 打印报表:使用iReport工具设计报表,并将导入的数据源与报表关联,最终生成报表并打印。 提高篇主要介绍子报表的创建。子...

    iReport使用JavaBean做数据源

    在软件开发中,报表生成是一个常见的需求,而iReport是一款广泛使用的开源报表设计工具,它允许开发者创建复杂的报表,并支持多种数据源,包括数据库、XML、JavaBean等。本文将详细讲解如何在iReport中使用JavaBean...

    ireport利用javabean做数据源实例

    【标题解析】:“ireport利用javabean做数据源实例”这一标题表明我们将探讨如何使用iReport工具,一个用于设计JasperReports报表的开源工具,通过JavaBean对象作为数据源来创建和展示报表。JavaBean是一种符合特定...

    iReport使用JavaBean作为数据源——最简单的示例

    本示例将向你展示如何利用iReport将JavaBean作为数据源,以生成定制化的报告。以下是对这个简单示例的详细解析: 1. **JavaBean作为数据源**:JavaBean是一种遵循特定规范的Java类,它封装了数据并提供了访问这些...

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

    在网上找了很多ireport基于javabean的主子报表配置的文章。要么版本太老,要么无图无真相。对于bean中的子报表集合数据源怎么获取,始终不成功。现经过尝试终于弄明白是怎么回事了,上传以供分享。因从事IT工作,...

    IReport使用Javabean做为数据源导PDF

    ### IReport 使用 JavaBean 作为数据源导出 PDF #### 概述 本文档将详细介绍如何使用 IReport 工具,结合 JavaBean 集合作为数据源来创建和导出 PDF 报表。相比于传统的 JDBC 数据源,使用 JavaBean 作为数据源具有...

    jasperreport+ireport创建javaBean多数据源报表

    2. **配置数据源**: 在ireport中,可以设置JavaBean数据源,指定JavaBean类名和属性映射。 3. **生成.jasper文件**: 保存并编译.jrxml文件,生成.jasper二进制模板。 4. **Java代码集成**: 在Java项目中,加载....

    图示ireport中使用javabean作数据源开发基于jasperreports报表过程

    在这个过程中,我们将深入探讨如何在`iReport`中使用`JavaBean`作为数据源来开发基于`JasperReports`的报表。 首先,我们需要了解`JavaBean`。`JavaBean`是一种符合特定规范的Java类,通常用于封装数据并提供公共...

    ireport中table使用javaBean数据源

    本知识点主要探讨的是如何在iReport中使用JavaBean作为数据源来填充表格(Table)组件。我们将深入理解这个过程,并结合提供的资源进行详细阐述。 1. **JavaBean数据源的原理** JavaBean是一种符合特定规范的Java...

    ireport中使用javabean作数据源开发jasperreports报表

    ### iReport中使用JavaBean作为数据源开发JasperReports报表 #### 创建JavaBean 在iReport中使用JavaBean作为数据源来开发JasperReports报表时,首先需要创建一个简单的JavaBean对象来存储数据。以下是一个名为`...

    JavaWeb_Ireport_Jasper_JavaBean_Mysql

    在本项目"JavaWeb_Ireport_Jasper_JavaBean_Mysql"中,开发者使用了这些技术来实现一个数据驱动的报表系统。 Ireport是一个流行的报表设计工具,它是JasperReports库的一部分,允许开发者通过直观的用户界面创建...

Global site tag (gtag.js) - Google Analytics