`
miwusenling
  • 浏览: 5828 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

liferay 添加报表功能

阅读更多
综述:最近项目中要添加报表功能,我们的项目是基于liferay开源框架开发的,在这个功能完成之际我将曾经在开发过程中遇到的种种问题和其解决方案分享出来,希望对有这方面需求的朋友有所帮助!

1.我用的报表工具是ireport+jasperreport。版本是4.02,你也可以在官网上去下最新版本但下的时候一定要注意ireport和jasper版本的一致。
2.下载完成后将jasper下的jar包放到工程的lib库中:commons-beanutils-1.8.0.jar,commons-collections-2.1.1.jar,commons-digester-1.7.jar,iText-2.1.7.jar,jasperreports-4.0.2.jar,jdt-compiler-3.1.1.jar,png-encoder-1.5.jar,poi-3.6.jar,serializer.jar,struts2-jasperreports-plugin-2.2.1.jar,xalan-2.7.1.jar,commons-logging-1.0.4.jar,groovy-all-1.7.5.jar,log4j-1.2.16.jar 如果你的项目没有用到struts2框架,你就不需要加struts2-jasperreports-plugin-2.2.1.jar这个jar包,否则上面所罗列的jar包一个都不要少,不然有时会很悲剧的,我在这个地方栽倒过,就是确了jar包,导致填充报表的时候老是出错。
3.用ireport生成jasper文件。至于如何生成报表文件,因为步骤比较长我会写在另外一篇博客中。
4.在程序中加载报表文件并以javabean作为数据源填充报表。我将关键的代码帖子这里,仅供参考:
     // 这是jasper文件的本机地址
     String reportFilePath = "F:/iReport/report1.jasper";
     File reportFile = new File(reportFilePath);
     // 用于保存最终将要填充数据的bean
     ArrayList<JiaTing> data = new ArrayList<JiaTing>();
     if(reportFile.exists()){
       //searchResult 是一个list结果集 List<Order> 的对象
       for(int i = 0;i < searchResult.size();i++){
          JiaTing jiaTing = new JiaTing();
  Order order = searchResult.get(i);
          jiaTing.setxxx(order.getxxx());
          .....
          .....
          data.add(jiaTing);
       }

       JRDataSource dataSource = new JRBeanCollectionDataSource(data);
       JRXlsExporter exporter = new JRXlsExporter();
JasperReport report = (JasperReport)JRLoader.loadObject(reportFilePath);
JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, dataSource);

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
exporter.exportReport();
     }

5.然后就可以生成报表了。我的环境是Liferay下的,所以我以如下的方式将报表文件以流的形式输出到页面:
ResourceResponse portletResponse = (ResourceResponse)PortletActionContext.getResponse();
HttpServletResponse response = PortalUtil.getHttpServletResponse(portletResponse);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
如果你的环境是普通的web项目,只需生成response对象然后调用相应的方法就可以了!
6.基本的过程就是如上所诉,如果你有什么问题需要资讯,欢迎留言或qq联系。我的qq:598683742.
分享到:
评论

相关推荐

    liferay产品(概述、功能、益处)

    ### Liferay产品:概述、功能、益处 #### 概述 Liferay Portal是一个领先的商业网络平台,专门设计用于构建企业级解决方案,旨在提供直接收益和长期价值。它结合了打包的应用程序和企业应用程序框架,形成一个综合...

    liferay扩展环境 liferay ext

    标题 "Liferay扩展环境 Liferay Ext" 涉及到的是Liferay门户平台的一个关键概念,Liferay Ext是用于扩展和定制Liferay功能的核心工具。Liferay是一个开源的企业级内容管理平台,它允许用户根据需求构建自定义的数字...

    liferay快速入门quickstart

    - **添加Portlets:**Portlets是Liferay中的关键组件,用于提供各种服务和功能。用户可以轻松地添加、移除或调整Portlets的位置,以满足个人需求。 - **用户管理:**Liferay提供了全面的用户管理工具,包括用户账户...

    Liferay Portal Liferay IDE

    Liferay Portal Liferay IDE

    Liferay6.0开发指南

    Liferay是一款功能强大且设计优秀的开源门户系统,其版本6.0尤其在多个方面进行了优化和完善,为开发者提供了更加友好和高效的工作环境。本指南旨在帮助开发者了解Liferay 6.0的核心特性和开发流程,通过详细的讲解...

    Liferay的CAS SSO实现

    5. **自定义和扩展**:Liferay和CAS的集成还支持自定义和扩展,比如自定义CAS的登录页面、添加额外的认证方式或者对特定用户组进行特殊处理。 SSO的实现不仅可以提升用户体验,还有助于提高安全性,因为用户不需要...

    Liferay 6 入门教程

    在Liferay 6中,开发工作主要围绕Portlets进行,Portlets是Liferay中的应用程序单元,它们可以嵌入到门户页面上提供特定的功能。"plugins开发指南2-开发一个简单的portlet.pdf"将引导初学者了解如何创建并部署基本的...

    liferay5.1.2文档(完)

    它通常涵盖创建站点、添加页面、部署portlet、自定义主题、集成外部服务等内容,让新用户能在短时间内上手并开始使用Liferay。 再者,`liferay_4_portlet_development_guide.pdf`是Liferay 4.x Portlet开发指南,...

    liferay-developer-guide-6.0_liferay_

    你将学习如何为portlet添加多语言支持,以及如何配置Liferay以适应不同地区的文化习惯。 总的来说,《Liferay Developer Guide 6.0》是一本全面且深度的教程,无论你是初学者还是有经验的开发者,都能从中受益匪浅...

    Liferay Web内容管理指南

    Liferay的Web内容管理(Web Content Management, WCM)系统旨在简化内容创建、发布和管理流程,使其不仅适用于不具备编程背景的用户,同时也为专业开发者提供了强大的功能集。Liferay WCM支持创建结构化内容、定制...

    liferay

    - **添加用户**:通过 Liferay 的管理界面或 API 创建新用户。 - **修改用户**:更新用户的个人信息或权限设置。 - **定义用户组**:用户组是一组用户的集合,便于进行批量管理和权限分配。 - **新增、重命名用户组*...

    liferay详细讲解 liferay项目完全讲解

    Liferay是一款开源的企业级门户平台,它提供了丰富的功能和高度可定制性,广泛应用于构建企业网站、内部系统、协作平台等。在这个“liferay详细讲解 liferay项目完全讲解”的资料包中,我们可以期待深入了解到关于...

    liferay 超级学习文档

    Liferay 采用模块化设计,支持服务导向架构(SOA),使得开发者可以轻松地添加或修改功能。其核心组件包括portlet容器、主题引擎、工作流系统、内容管理系统等,这些都为创建企业级门户提供了坚实的基础。 二、Java...

    Liferay入门帮助文档(Liferay开发指南)

    Liferay提供了一种方法来创建新的空项目,然后在项目中添加portlet。创建portlet的过程中,开发者可以定义portlet的行为和视图。完成portlet的编码后,通过编译和部署步骤,将portlet打包成JAR或WAR文件,然后将其...

    liferay6.06

    Liferay Portal是一款功能强大的企业级门户平台,支持多语言、多租户,提供内容管理、社交协作、工作流、个性化等功能。6.0.6版本在稳定性与性能上有所提升,适合开发者和企业进行二次开发。 2. 安装纯净版Eclipse...

    liferay 整合struts例子

    然后在Liferay门户中添加并配置portlet,进行功能测试。 6. **report-form-portlet**:这个文件可能是例子中的一个portlet,可能包含了一个报告或表单的展示和处理。它展示了如何在Liferay中创建一个基于Struts的...

    liferay 6.0 开发指南

    - **Ext-plugins**:Ext-plugins是一种特殊的插件类型,用于扩展Liferay的功能,如添加新的服务或修改现有行为。 - **Web Application Integrator (WAI)**:WAI用于集成现有的Web应用程序到Liferay门户中,使其...

    liferay-portal详解

    Liferay Portal 的桌面是一个个性化的入口,提供了用户的个性化设置和自定义功能。桌面包括多个portlet,提供了不同的功能和服务。 Liferay Portal 的品质 Liferay Portal 的品质是一个个性化的设置,提供了用户的...

    LIFERAY的ppt课件

    Liferay是一款开源的企业级门户平台,它提供了强大的内容管理、协作和社交功能,被广泛用于构建企业内部或外部的Web应用程序。Liferay的核心特性包括网站构建、内容管理、工作流程、社区参与以及与其他系统的集成。...

Global site tag (gtag.js) - Google Analytics