`
xuxingyin
  • 浏览: 48490 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

struts2整合ireport复合报表

阅读更多

From:http://hi.baidu.com/lxiangshanyu/blog/item/171a7661a5ce53720d33fa76.html

 

Model类:

主表对应Model类:

public class OrderIreport {
       private Long id;
       private String orderSN;  

       private String email;
       private String tel;
       private String status;
       private String memo;
       private String creator;

       private List<OrderInfoIreport> orderInfos;

      //Set、Get方法省略

 }
子表对应的Model类:

public class OrderInfoIreport {

       private Long id;
       private String orderSN;

       private int num;
       private Timestamp startDate; 
       private Timestamp endDate;

       //Set、Get方法省略
}


Struts:Action方法

public String print() throws JRException, IOException{

       //数据源
       orders = orderManagers.getAllOrder();
       if(orders != null && !(orders.isEmpty())){
           for(int i = 0;i < orders.size();i++){
                List<OrderInfoIreport> orderInfo = orderManagers.getOrderInfoByOrderSN(orders.get(i).getOrderSN());
                orders.get(i).setOrderInfos(orderInfo);
           }
       }
  
       ServletContext context = getRequest().getSession().getServletContext();
       String subPath = context.getRealPath("/reports/OrderSub.jasper");  //OrderSub.jasper  子报表
       String filePath = context.getRealPath("/reports/OrderPrint.jasper");  //OrderPrint.jasper  主报表
       JasperReport subReport = (JasperReport)JRLoader.loadObject(subPath);
       JasperReport fileReport = (JasperReport)JRLoader.loadObject(filePath);
       Map subMap = new HashMap();
       subMap.put("SUBREPORT_DIR", subReport);  //子报表路径
       JRBeanCollectionDataSource dataSource =new JRBeanCollectionDataSource(orders);
       JasperPrint jasperPrint = JasperFillManager.fillReport(fileReport, subMap, dataSource);
  
       HttpServletResponse response = ServletActionContext.getResponse();
       OutputStream os = response.getOutputStream();
       response.setContentType("application/pdf");
       response.setHeader("Content-Disposition", "filename=orderPrint.pdf");
       response.setCharacterEncoding("UTF-8");
       JRPdfExporter exporter = new JRPdfExporter();
       exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
       exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, os);
       exporter.exportReport();

       return null;
 }

在做struts2整合ireport复合报表时最重要的是子报表的路径和子报表的数据源。

1)子报表的路径是由SUBREPORT_DIR变量指明的,程序中已标明,主报表是根据SUBREPORT_DIR变量找到子报表的;

2)子报表的数据源:子报表的数据源也是由主报表提供的,在主报表中增加 orderInfos(主表对应的Model类中的属性) 字段,然后在主报表中双击子报表,选择子报表标签,连接/数据源表达式 选择使用数据源表达式,表达式为new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{orderInfos});在 子报表(其他) 标签中,子报表表达式类选择 net.sf.jasperreports.engine,JasperReport ,子报表表达式为 $P{SUBREPORT_DIR}

创建子报表时就跟创建一张普通的报表一样,没有特殊的设置

最后,在Action中的return返回时返回NULL即可

分享到:
评论

相关推荐

    struts2+ireport3.7.2 报表基本应用

    Struts2+iReport3.7.2报表基本应用是一个典型的Java Web开发中的报表生成场景,主要涉及两大核心技术:Struts2作为MVC框架处理前端请求和业务逻辑,iReport作为一个强大的报表设计工具,用于创建复杂的报表模板。...

    struts2+ireport+jasperreport报表设计简单示例

    使用ireport和struts2进行报表设计的简单示例,生成普通报表和饼图、柱状图。java工程的lib里包含丰富的jar包,且很多都是从各个网站下载的最新版本,文件夹内还包含一些ireport和jasperreport文档,适合刚入门学习...

    Struts2+ireport PDF报表

    在Struts2中集成iReport,可以实现从数据库或其他数据源获取数据,然后以PDF格式展示给用户,这对于企业级应用来说非常重要,因为PDF报表通常用于打印、保存和分发,确保数据的一致性和完整性。 **Struts2的配置** ...

    struts2+jasperReport+ireport做报表总结

    Struts2、JasperReport 和 iReport 是开发Web报表应用中的常用技术栈。本文主要针对使用Struts2框架结合JasperReport5.0与iReport5.0进行报表开发时可能遇到的问题进行总结。 1. **报表预览问题**: - 数据源为空...

    ireport子报表嵌套

    2. 创建子报表:然后,我们需要创建一个子报表,作为父报表中的一个组件。子报表是一个独立的报表,需要单独设计和实现。 3. 父报表关联子报表:在父报表中,我们需要关联子报表,通过 SubReportExpression 来实现。...

    struts2 jasper iReport 报表

    Struts2、 Jasper 和 iReport 是Java开发领域中用于创建动态和复杂的报表的重要工具。Struts2是一个基于MVC(模型-视图-控制器)架构的Web应用框架,它为开发者提供了一种组织和控制应用程序逻辑的方式。...

    struts2+Ireport+Jasperreport实现报表导出

    Struts2、iReport与JasperReport是Java开发中用于构建高效、动态Web应用程序和报表生成的工具。在这个项目中,这些技术结合在一起,提供了一种强大的报表导出解决方案。以下是对这些关键技术及其在项目中的应用的...

    Ireport4集成Struts2

    标题"Ireport4集成Struts2"涉及的是Java开发中两个重要的技术组件——iReport和Struts2的整合。iReport是JasperReports库的一个可视化设计工具,用于创建复杂的报表,而Struts2则是一个流行的MVC(模型-视图-控制器...

    maven struts2 jasperreport ireport亲测通过整合多家资源

    在这个场景下,`Maven`、`Struts2`、`JasperReport` 和 `iReport` 是四个关键的技术组件,它们共同作用于创建一个强大的、数据驱动的Web应用程序。下面将详细介绍这些技术及其整合过程。 首先,`Maven` 是一个项目...

    Struts2整合jasperReports报表

    在Struts2中整合jasperReports,可以实现Web应用中的动态报表生成和展示功能。首先,我们需要确保系统环境中已经安装了jasperReports库以及其依赖的iReport设计工具。iReport是用于设计jasperReports报表的图形化...

    struts2+ireport学习小结(一)

    在本学习小结中,我们将探讨如何将Struts2与IReport整合,以实现在Web应用中动态生成和展示报表的功能。 首先,让我们了解Struts2的基础知识。Struts2的核心是Action类,它是处理用户请求并返回结果的核心组件。...

    iReport 报表、子报表、主从报表、合计、实例解析

    iReport 报表、子报表、主从报表、合计、实例解析1. 开发使用步骤(iReport4.1)... 2 4.1. JasperReport 和iReport的介绍... 2 4.1.1. JasperReport 简介... 3 4.1.2. iReport 简介... 3 4.1.2.1. iReport几个重要...

    struts+ireport报表在页面显示,导出,打印功能

    3. **Struts整合**:在Struts中,我们需要创建一个Action类来处理报表相关的请求。Action类会调用服务层方法,执行数据查询并生成报表。通常,报表的生成会涉及到JasperReport库,使用`JasperFillManager.fillReport...

    ireport+struts2实现web开发

    IReport是一款强大的报表设计工具,它允许开发者通过拖拽方式创建复杂的报表,而Struts2则是一个流行的Java Web框架,用于处理用户请求并管理应用程序流程。下面将详细阐述这两个技术及其结合使用的要点。 1. ...

    struts2整合jasperreport

    在本文中,我们将深入探讨如何整合Struts2框架与JasperReport3来创建动态报表,并利用iReport工具进行报表设计。Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则...

    MyEclipse Eclipse iReport JasperReport Struts2

    【MyEclipse、Eclipse、iReport、JasperReport与Struts2的整合】 在Java Web开发中,MyEclipse和Eclipse是两种常用的集成开发环境(IDE),它们提供了丰富的功能,包括代码编辑、调试、构建和部署等。iReport是一款...

    ireport交叉报表自定义排序

    2. **性能考虑**:对于大数据量的报表,直接在iReport中进行复杂的数据处理可能会导致性能下降。此时建议优先采用SQL查询的方式来进行数据预处理。 3. **兼容性问题**:不同版本的iReport可能存在兼容性差异,因此在...

    ireport 子报表,行合并实例

    IReport和JasperReport是两个非常流行的Java报表工具,它们能够帮助开发者创建复杂、美观且功能丰富的报表。本篇将深入探讨如何利用IReport来实现子报表以及行合并的实例。 首先,IReport是一款基于GUI的报表设计...

    ireport + struts2整理

    Struts2与ireport的整合主要体现在通过Action类处理请求,然后调用ireport生成报表,最后将报表内容返回给前端展示。为了实现这一过程,我们需要在Struts2配置文件中定义相关的Action,指定ireport生成报表的方法,...

    ireport导出报表.pdf

    在本部分中,我们可以识别出关于iReport工具导出报表为PDF格式的一系列操作细节和知识点。iReport是一个报表设计工具,可以用来创建复杂的报表,并且可以将报表导出为多种格式,包括PDF和HTML。下面,我们将详细讲解...

Global site tag (gtag.js) - Google Analytics