`
jimmy.shine
  • 浏览: 399658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JasperReport报表设计总结(三)(已完毕)

阅读更多
由于在一个里面不能贴太多的代码,故放置代码在此处。
上接:http://jimmy-shine.iteye.com/blog/123595

PDF格式的:
java 代码
 
  1. /** 
  2.  * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd. 
  3.  * @author Jimmy.Shine 2007-5-12 
  4.  */  
  5. package cn.com.reachway.framework.report.export;  
  6.   
  7. import java.io.IOException;  
  8. import java.io.OutputStream;  
  9. import java.net.URLEncoder;  
  10. import java.sql.Connection;  
  11. import java.util.List;  
  12. import java.util.Map;  
  13.   
  14. import javax.servlet.http.HttpServletRequest;  
  15. import javax.servlet.http.HttpServletResponse;  
  16.   
  17. import net.sf.jasperreports.engine.JRDataSource;  
  18. import net.sf.jasperreports.engine.JRException;  
  19. import net.sf.jasperreports.engine.JRExporterParameter;  
  20. import net.sf.jasperreports.engine.JasperPrint;  
  21. import net.sf.jasperreports.engine.export.JRPdfExporter;  
  22. import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;  
  23. import cn.com.reachway.framework.exception.JasperReportException;  
  24. import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;  
  25. import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;  
  26.   
  27. /** 
  28.  *  
  29.  */  
  30. public class PDFExport {  
  31.   
  32.     /** 
  33.      * 导出报表 
  34.      *  
  35.      * @param request 
  36.      * @param response 
  37.      * @param reportFilePath 
  38.      * @param params 
  39.      * @param con 
  40.      * @param fileName 
  41.      * @throws JasperReportException 
  42.      */  
  43.     public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,  
  44.             Connection con, String fileName) throws JasperReportException {  
  45.   
  46.         JasperPrint jasperPrint = new JasperPrintWithConnection(reportFilePath, params, con).getJasperPrint();  
  47.         // 将填充完的japserPrint放入session中。  
  48.         request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  49.         // 拿到japserPrintList  
  50.         List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);  
  51.         // 若没有JasperPrintList,则抛出异常  
  52.         if (jasperPrintList == null) {  
  53.             throw new JasperReportException("在Http Session中没有找到JasperPrint List");  
  54.         }  
  55.         try {  
  56.             OutputStream ouputStream = response.getOutputStream();  
  57.             try {  
  58.                 response.setContentType("application/pdf");  
  59.                 response.setCharacterEncoding("UTF-8");  
  60.                 if (fileName == null || fileName.equals(""))  
  61.                     response.setHeader("Content-Disposition""inline; filename=\"noTitle.pdf\"");  
  62.                 else  
  63.                     response.setHeader("Content-Disposition""inline; filename=\""  
  64.                             + URLEncoder.encode(fileName, "UTF-8") + ".pdf\"");  
  65.                 // 使用JRPdfExproter导出器导出pdf  
  66.                 JRPdfExporter exporter = new JRPdfExporter();  
  67.                 // 设置JasperPrintList  
  68.                 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);  
  69.   
  70.                 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);  
  71.                 exporter.exportReport();  
  72.             } catch (JRException e) {  
  73.                 e.printStackTrace();  
  74.                 throw new JasperReportException("在导出pdf格式报表时发生错误");  
  75.             } finally {  
  76.                 if (ouputStream != null) {  
  77.                     try {  
  78.                         ouputStream.close();  
  79.                     } catch (IOException ex) {  
  80.                     }  
  81.                 }  
  82.             }  
  83.         } catch (IOException ioe) {  
  84.             ioe.printStackTrace();  
  85.             throw new JasperReportException("从Response中取得OutputStream时发生错误!");  
  86.         }  
  87.     }  
  88.   
  89.     /** 
  90.      * 导出报表 
  91.      *  
  92.      * @param request 
  93.      * @param response 
  94.      * @param reportFilePath 
  95.      * @param params 
  96.      * @param dataSource 
  97.      * @param fileName 
  98.      * @throws JasperReportException 
  99.      */  
  100.     public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,  
  101.             JRDataSource dataSource, String fileName) throws JasperReportException {  
  102.   
  103.         JasperPrint jasperPrint = new JasperPrintWithDataSource(reportFilePath, params, dataSource).getJasperPrint();  
  104.         // 将填充完的japserPrint放入session中。  
  105.         request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  106.         // 拿到japserPrintList  
  107.         List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);  
  108.         // 若没有JasperPrintList,则抛出异常  
  109.         if (jasperPrintList == null) {  
  110.             throw new JasperReportException("在Http Session中没有找到JasperPrint List");  
  111.         }  
  112.         try {  
  113.             OutputStream ouputStream = response.getOutputStream();  
  114.             try {  
  115.                 response.setContentType("application/pdf");  
  116.                 response.setCharacterEncoding("UTF-8");  
  117.                 if (fileName == null || fileName.equals(""))  
  118.                     response.setHeader("Content-Disposition""inline; filename=\"noTitle.pdf\"");  
  119.                 else  
  120.                     response.setHeader("Content-Disposition""inline; filename=\""  
  121.                             + URLEncoder.encode(fileName, "UTF-8") + ".pdf\"");  
  122.                 // 使用JRPdfExproter导出器导出pdf  
  123.                 JRPdfExporter exporter = new JRPdfExporter();  
  124.                 // 设置JasperPrintList  
  125.                 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);  
  126.   
  127.                 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);  
  128.                 exporter.exportReport();  
  129.             } catch (JRException e) {  
  130.                 e.printStackTrace();  
  131.                 throw new JasperReportException("在导出pdf格式报表时发生错误");  
  132.             } finally {  
  133.                 if (ouputStream != null) {  
  134.                     try {  
  135.                         ouputStream.close();  
  136.                     } catch (IOException ex) {  
  137.                     }  
  138.                 }  
  139.             }  
  140.         } catch (IOException ioe) {  
  141.             ioe.printStackTrace();  
  142.             throw new JasperReportException("从Response中取得OutputStream时发生错误!");  
  143.         }  
  144.     }  
  145.   
  146. }  
分享到:
评论
11 楼 水土第一 2014-03-10  
在flash显示jasperprintlist的时候,根据下面的语句只能显示第一个报表,请指教。。。



request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_LIST_SESSION_ATTRIBUTE,jlist);
10 楼 水土第一 2014-02-26  
结构分的很清晰。。。加上applet与jasper的东西就更完美了。。。
9 楼 zwj1533 2013-11-09  
先谢谢,详细研究时再细读!
8 楼 frandick584 2013-03-12  
lygydl 写道
非常感谢,不过。。。。。。作为刚入门的我,还是没有运行起来,如何架设环境?没有得到一个pdf,能不能麻烦您好人做到底?

7 楼 泡泡 2008-03-29  
现在Crystal Report有个开发版对Java是免费的,比JasperReport好用多了
6 楼 lygydl 2008-03-29  
非常感谢,不过。。。。。。作为刚入门的我,还是没有运行起来,如何架设环境?没有得到一个pdf,能不能麻烦您好人做到底?
5 楼 flash 2007-12-07  
生成pdf的时候,字体设置好麻烦.动不动就出问题.所以还是用excel了.
4 楼 xcg1688 2007-12-04  
非常感谢,不过。。。。。。作为刚入门的我,还是没有运行起来,没有得到一个pdf,能不能麻烦您好人做到底?

3 楼 palmer 2007-11-10  
Thank you very much!
2 楼 neetgo 2007-09-14  
呵呵,不错,谢谢楼主了...
1 楼 glassprogrammer 2007-09-13  
引用
# /**
#  * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd.
#  * @author Jimmy.Shine 2007-5-12
#  */ 


这个。。。,貌似放出来不太合适吧

相关推荐

    JasperReport初级教程(2.0.3)图文详解

    在本教程中,我们将详细介绍如何使用JasperReport 2.0.3版本来创建报表模板,并进行简单的报表设计。本教程主要面向初学者,旨在帮助大家快速入门。 #### 二、下载与安装iReport ##### 1. 下载iReport iReport是...

    JasperRepost生成报表例子

    JasperReport通过使用JRXML文件定义这些布局,这是一种基于XML的报表设计语言。 1. **报表设计**: - 使用JasperDesign或IReport(一个可视化的报表设计工具)创建JRXML文件,定义报表的样式、布局和字段。 - ...

    iReport+jasperReports 联合开发JAVA报表

    2. **编译阶段**:设计完成后,iReport会将报表模板(.jrxml文件)编译成JasperReport引擎可理解的二进制格式(.jasper文件)。这一步骤确保了报表模板的执行效率。 3. **填充阶段**:在Java应用程序中,使用...

    iReport 4.1教程.docx

    iReport 是一款强大的开源报表设计工具,主要用于创建 JasperReport 的报表格式文件。它弥补了 JasperReport 在可视化报表设计上的不足,提供了用户友好的图形界面。iReport 4.1.1 是一个较旧但仍然广泛使用的版本,...

    jsp调用jasper

    2..jasper 文件生成:iReport 新创建的报表模板为.jrxml 格式,编辑完毕后需要编译,编译会产生.jasper 文件。在运行时需要编译好的.jasper 文件,这原理类似 java 程序,源代码文件是.java,编译好之后是.class ...

    ireport5.6 导出excel,pdf

    iReport是一款强大的报表设计工具,它与Java Report Design Language (JRDJ) 和JavaServer Pages (JSP) 配合使用,能够为Java应用程序提供灵活的报告生成功能。 描述中提到,开发环境是基于JBoss应用服务器和ZK(ZK...

    固定资产管理系统

    总结来说,基于Java Swing的固定资产管理系统是一个集数据输入、处理、查询、报表于一体的综合性应用。它结合了Java编程语言的强大功能和Swing的GUI设计优势,为企业提供了直观、易用的资产管理工具。在实际开发中,...

    总务科维修报单系统

    开发了一套的维修报单系统,用于简化其维修报单过程,加强管理,以及提供规范化报表。该系统采用JasperReport,SQL Server2000,Swing (一) 业务流程 1. 报修人到报单员那里申请报修单 2. 报单员填入必填...

Global site tag (gtag.js) - Google Analytics