- 浏览: 307264 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wst0350:
点赞,有空深入讲解下原理
Servlet、Filter 和 Listener 调用顺序、生命周期的实验分析 -
tuspark:
Eclipse中高亮设置内容还有很多细节选项可以设置的,可以看 ...
Eclipse 设置匹配代码高亮 -
xichao1929:
这个时候,怎么启动发布的项目呢?????
JBoss设置为Windows服务 -
xiaozi7:
非常感谢,楼主的英语水平不一般那
WebSphere MQ Version 7 发布订阅相关配置 -
qtlkw:
slave没玩过
Hudson: java.lang.OutOfMemoryError: Java heap space error
import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.jasperreports.engine.JRAbstractExporter; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperCompileManager; 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.export.JExcelApiExporter; import net.sf.jasperreports.engine.export.JRHtmlExporter; import net.sf.jasperreports.engine.export.JRHtmlExporterParameter; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.JRRtfExporter; import net.sf.jasperreports.engine.export.JRXmlExporter; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.j2ee.servlets.ImageServlet; /** * 使用jasperReport做报表时的工具支持类.有两个用途,生成jasperPrint对象,和设置导出时的session */ public class ReportUtils { private HttpServletRequest request; private HttpServletResponse response; // private HttpSession session; /** * 在其它web环境下构造此工具类对象 * * @param request * request请求对象 */ public ReportUtils(HttpServletRequest request) { this.request = request; // this.session = request.getSession(); } public ReportUtils(HttpServletResponse response) { this.response = response; } public ReportUtils(HttpServletRequest request, HttpServletResponse response) { this(request); this.response = response; } /** * 获得JasperPrint对象;自定义填充报表时的parameter和dataSource. 参数说明和动态表头的用法参考上一方法 * * @param filePath * @param parameter * @param dataSource * @param sizeGroup * @return */ public JasperPrint getJasperPrint(String filePath, Map parameter, JRDataSource dataSource) throws JRException { JasperReport jasperReport = null; try { jasperReport = (JasperReport) JRLoader.loadObject(new File(filePath)); return JasperFillManager.fillReport(jasperReport, parameter, dataSource); } catch (JRException e) { e.printStackTrace(); } return null; } /** * 通过传入List类型数据源获取JasperPrint实例 * * @param filePath * jasper路径 * @param parameter * @param list * @return * @throws JRException */ public JasperPrint getPrintWithBeanList(String filePath, Map parameter, List list) throws JRException { JRDataSource dataSource = new JRBeanCollectionDataSource(list); return getJasperPrint(filePath, parameter, dataSource); } /** * 传入类型,获取输出器 * * @param docType * @return */ public JRAbstractExporter getJRExporter(DocType docType) { JRAbstractExporter exporter = null; switch (docType) { case PDF: exporter = new JRPdfExporter(); break; case HTML: exporter = new JRHtmlExporter(); break; case XLS: exporter = new JExcelApiExporter(); break; case XML: exporter = new JRXmlExporter(); break; case RTF: exporter = new JRRtfExporter(); break; } return exporter; } // public void setAttrToPage(JasperPrint jasperPrint, String report_fileName, // String report_type) { // request.setAttribute("REPORT_JASPERPRINT", jasperPrint); // request.setAttribute("REPORT_FILENAME", report_fileName); // request.setAttribute("REPORT_TYPE", report_type); // } /** * 定义了报表输出类型,固定了可输出类型 * * @author Administrator * */ public static enum DocType { PDF, HTML, XLS, XML, RTF } /** * 编译报表模板文件jaxml,生成jasper二进制文件 * * @param jaxmlPath * @param jasperPath * @throws JRException */ public void complieJaxml(String jaxmlPath, String jasperPath) throws JRException { JasperCompileManager.compileReportToFile(jaxmlPath, jasperPath); } /** * 输出PDF 使用此方法,必须预先注入response * * @param jasperPath * @param params * @param sourceList * @param fileName * @throws JRException * @throws IOException * @throws ServletException */ public void servletExportPDF(String jasperPath, Map params, List sourceList, String fileName) throws JRException, IOException, ServletException { servletExportDocument(DocType.PDF, jasperPath, params, sourceList, fileName); } /** * 输出html静态页面,必须注入request和response * * @param jasperPath * @param params * @param sourceList * @param imageUrl * 报表文件使用的图片路径,比如 ../servlets/image?image= * @throws JRException * @throws IOException * @throws ServletException */ public void servletExportHTML(String jasperPath, Map params, List sourceList, String imageUrl) throws JRException, IOException, ServletException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); JRAbstractExporter exporter = getJRExporter(DocType.HTML); JasperPrint jasperPrint = getPrintWithBeanList(jasperPath, params, sourceList); request.setAttribute( ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint); PrintWriter out = response.getWriter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, imageUrl); exporter.exportReport(); } /** * 输出Excel报表文件 * * @param jasperPath * @param params * @param sourceList * @param fileName * @throws JRException * @throws IOException * @throws ServletException */ public void servletExportExcel(String jasperPath, Map params, List sourceList, String fileName) throws JRException, IOException, ServletException { servletExportDocument(DocType.XLS, jasperPath, params, sourceList, fileName); // 要想获得更好的视觉效果,可以添加以下代码 // // exporter.setParameter( // // JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, // // Boolean.TRUE); // 删除记录最下面的空行 // // // exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, // // Boolean.FALSE);// 删除多余的ColumnHeader // // // exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND // , // // Boolean.FALSE);// 显示边框 } /** * 生成不同格式报表文档 * * @param docType * 文档类型 * @param jasperPath * @param params * @param sourceList * @param fileName * @throws JRException * @throws IOException * @throws ServletException */ public void servletExportDocument(DocType docType, String jasperPath, Map params, List sourceList, String fileName) throws JRException, IOException, ServletException { if (docType == DocType.HTML) { servletExportHTML(jasperPath, params, sourceList, fileName); return; } JRAbstractExporter exporter = getJRExporter(docType); // 获取后缀 String ext = docType.toString().toLowerCase(); if (!fileName.toLowerCase().endsWith(ext)) { fileName += "." + ext; } // 判断资源类型 String contentType = "application/"; if (ext.equals("xls")) { ext = "excel"; } else if (ext.equals("xml")) { contentType = "text/"; } contentType += ext; response.setContentType(contentType); response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\""); exporter.setParameter(JRExporterParameter.JASPER_PRINT, getPrintWithBeanList(jasperPath, params, sourceList)); OutputStream ouputStream = response.getOutputStream(); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); try { exporter.exportReport(); } catch (JRException e) { throw new ServletException(e); } finally { if (ouputStream != null) { try { ouputStream.close(); } catch (IOException ex) { } } } } }
一、导出报表到html
InputStream inputStream = ServletActionContext.getServletContext().getResourceAsStream("/report/xxx.jasper"); Collection<xxxo> data=xxxService.getData(params); Map<Object,Object> map=xxxService.getMap(startTime, endTime); JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(data); //填充报表 JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream,map, dataSource); //设置输出类型及报表的内置参数 response.setContentType("text/html"); OutputStream outputStream=response.getOutputStream(); ReportXHtmlExporter htmlExporter=new ReportXHtmlExporter(page,jasperPrint); request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,jasperPrint); htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint); htmlExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); if(jasperPrint.getPages().size()>1){ htmlExporter.setParameter(JRExporterParameter.PAGE_INDEX, 1); } htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE); htmlExporter.exportReport(); outputStream.flush(); outputStream.close();
二、导出到PDF
OutputStream outputStream=response.getOutputStream(); File reportFile = new File(ServletActionContext.getServletContext().getRealPath("/report/xxx.jasper")); if (!reportFile.exists()){ throw new JRRuntimeException("File dispatch_report.jasper not found."); } JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); //javabean数据源 Collection<xxx> data=xxxService.getData(params); Map<Object,Object> map=xxxService.getMap(startTime, endTime); JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(data); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,map, dataSource); JRPdfExporter pdfExporter=new JRPdfExporter(); pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); response.setContentType("application/pdf"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode("XXX报表", "UTF-8") + ".pdf\""); pdfExporter.exportReport(); outputStream.flush(); outputStream.close();
三、web.xml配置
<!--JasperReport显示图片的,象素图片--> <servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <!-- /report/image路径,report表示struts中的表空间(具体就看url请求的路径),image表示Action文件里配置image?image=问号前的image相同--> <url-pattern>/report/image</url-pattern> </servlet-mapping>
发表评论
-
es使用两种方式
2018-06-28 16:26 0第一种方式: 使用TransportClient packag ... -
hbase
2018-06-25 13:50 0package cn.com.duiba.appordersy ... -
guava
2017-09-22 18:03 6381.Guava Cache的get/getIfPresent方 ... -
转:架构
2017-06-23 08:13 493架构是软件的核心和灵魂,没有好的架构的软件经过一段时间的迭代后 ... -
使用 redis 减少 秒杀库存 超卖思路
2017-06-22 23:58 561612月份重构公司社群活动产品,原来自己不是很成熟,按传统的形式 ... -
经典笔试题
2017-06-21 23:30 495public class BaseTest { pu ... -
Restful vs RPC
2017-01-23 10:54 865传统的RPC一般是基于二 ... -
自动产生随机数
2016-11-11 10:54 555/** * java生成随机数字和字母组合 ... -
commons-lang常用工具类StringEscapeUtils
2016-11-10 20:12 8831.escapeSql 提供sql转移功能,防止sql注入攻击 ... -
Java8:Lambda表达式增强版Comparator和排序
2016-10-27 10:32 2693http://www.importnew.com/15259. ... -
Java序列化几点注意事项
2016-10-26 17:02 894静态变量不属于对象,属于类,不能被序列化.还有瞬态的变量也不能 ... -
Rest vs dubbo
2016-09-15 18:10 0Rest 基于http, 大数据量和安全性可能不佳 dubbo ... -
List删除element两种方式的不同
2016-07-26 12:41 679public class DateUtilTest { ... -
Xmemcached——比spymemcached更快
2016-07-18 10:23 467Xmemcached是一个高性能的 ... -
velocity 缓存设置
2016-07-04 20:54 1062#velocity 是否开启缓存 velocity.resou ... -
Java8 Stream用法
2016-07-04 18:58 01. collect(toList()) 由stream里的值 ... -
熔断器设计模式
2016-05-22 23:14 600转载: http://www.cnblogs.com/ ... -
Date 参数
2016-04-22 21:44 563Oracle TO_CHAR parameters: The ... -
Dubbo安装部署
2016-04-18 01:16 1609Jdk-1.6.30以上版本 Tomcat-7 ... -
java read也需要加锁
2016-02-27 18:11 643今天被问到read需不需要加锁,结果没答上来。自己写了一个程序 ...
相关推荐
《Jasper库1.900.1版的深度解析》 Jasper,作为一个开源的JPEG 2000编解码库,是处理JPEG 2000图像格式的关键工具。这个名为"jasper-1.900.1.tar.gz"的压缩包包含了Jasper库的1.900.1版本,它提供了对JPEG 2000标准...
中国联通物联网Jasper平台是一款专为实现企业物联网(IoT)高效运营而设计的综合性解决方案。该平台的核心功能和特点主要包括以下几个方面: 1. **全面的设备管理**:Jasper平台支持大规模的物联网设备连接和管理,...
Jasper报表是一款强大的开源报表工具,它允许开发者创建复杂的数据可视化和打印输出。这份官方文档集合包含了关于Jasper的核心组件的详细指南,如iReport、JasperServer以及JasperReports,确保用户能够利用最新的...
里面有jasper.jar,jasper-compiler.jar,jasper-compiler-jdt-5.5.15.jar,jasper-el.jar,jasper-jdt.jar,jasper-runtime.jar
Apache Jasper 是一个开源项目,它是Apache Tomcat服务器的一部分,用于处理JSP(JavaServer Pages)技术。JSP是Java平台上用于创建动态Web内容的一种方式,它允许开发人员将静态HTML与动态Java代码相结合,以生成...
JasperServer中文版是一款专为满足中国用户需求而设计的开源商业智能(BI)平台,它基于JasperReports项目,提供了丰富的报表和数据分析功能。这个资源包包含了JasperServer界面的中文语言翻译,使得中国用户在使用...
jasper.jar jasper.jar
这个过程中,jasper-compiler.jar会解析JSP文件中的Java代码和JSP元素,确保这些元素能够与Servlet API正确交互,生成可以被Java虚拟机执行的代码。这是JSP页面能够动态生成内容并展示给用户的关键所在。Jasper...
《jasper-1.900.1:深入解析开源报表引擎》 jasper-1.900.1是一款广泛应用于商业智能领域的开源报表引擎,它的存在为开发者提供了强大的数据可视化工具,使得生成复杂、动态的报表变得简单易行。jasper-1.900.1版本...
jasper 变量的表达式的问题 Jasper 变量的表达式是 JasperReport 中一个重要的概念,它允许开发者在报表中定义和使用变量,以便于实现复杂的业务逻辑。 Jasper 变量的表达式可以分为两类:一种是字段类型的变量,...
《图像压缩技术:深入解析jasper-1.900.1开源库》 在信息技术领域,图像处理和压缩技术是不可或缺的一部分。本文将详细探讨一个名为“jasper-1.900.1”的开源库,它包含了各种图像格式的编解码源码,对于开发者来说...
jsp调用jasper jsp 调用 jasper 是一种常见的报表生成方式,jasper 报表工具可以与 jsp 集成,以生成动态的报表。下面是 jsp 调用 jasper 的一些关键知识点: 1. iReport 设置默认语言:在 iReport 中,语言设置...
相关的Jasper的jar包。里面有jasper.jar,jasper-compiler.jar,jasper-compiler-jdt-5.5.15.jar,jasper-el.jar,jasper-jdt.jar,jasper-runtime.jar
【Jasper】是一款知名的开源报表工具,主要用于生成各种复杂的企业级报表。它的全名是JasperReports,由Talend公司维护。Jasper的核心功能包括设计、生成、展示以及打印报表,支持多种数据源,如数据库、CSV文件、...
Jasper Report用户手册 version1.0 1 简介 2 API概览 Class net.sf.jasper.engine.design.JasperDesign Class net.sf.jasper.engine.JasperReport Class net.sf.jasper.engine.JasperCompileManager Class ...
在本篇文章中,我们将深入探讨如何使用Jasper来构建各种类型的报表,包括普通报表、分组报表、自定义报表、图形报表以及图形表格混合的报表。 首先,我们从基础开始——普通报表。JasperReport的基础在于JRXML文件...
Jasper 是一个强大的报告生成工具,它被广泛用于Java应用程序中,尤其是与iReport结合使用时,能够方便地设计和生成各种复杂的报表。jasper的jar文件是JasperReport库的核心组成部分,它包含了运行jasper报表所需的...
《深入解析jasper-1.700.21开源库源代码》 JPEG2000是一种先进的图像编码标准,由国际电信联盟(ITU)推荐,它在图像压缩领域有着广泛的应用。jasper库是专门为JPEG2000提供支持的开源软件,其最新版本jasper-1.700...