`
jimmy.shine
  • 浏览: 394786 次
  • 性别: 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报表设计总结

    本文主要总结了JasperReport报表设计的关键点,包括报表格式定制、数据填充以及显示或打印。 首先,报表格式的定制分为两种方式。一是编写jrxml文件,这是一种XML格式的文件,用于描述报表的布局和样式。另一种方式...

    jasperReport测试项目(含报表设计文件).rar_jasperReport 设计报表_jasperreport_报表设

    在本项目中,“jasperReport测试项目(含报表设计文件).rar”是一个压缩包,包含了一系列用于JasperReport报表设计的文件,帮助我们理解和实践报表开发。 报表设计是JasperReport的核心功能,通过使用JRXML文件,...

    jasperreport报表开发小结.docx

    Jaspersoft iReport Designer 5.6.0 设计器的功能很强大,它可以实现 Table 表、交叉表、子报表、多数据源等复杂的报表设计。ireport 的使用可以分为以下几步: • 设计报表模板 • 生成 XML 格式的文件 • 编译生成...

    jasperreport一个子报表的例子

    1. **设计子报表**:使用报表设计工具创建子报表的JRXML文件,定义其布局和数据绑定。 2. **编译子报表**:将子报表的JRXML文件编译成.jasper文件。 3. **在主报表中添加子报表**:在主报表的JRXML中,使用`...

    JasperReport 中交叉报表指南

    要设置 subDataSets 数据源,需要在报表设计中点击“数据源”按钮,然后选择“subDataSets”,并填写数据源名称和 SQL 语句。 2. 填写数据源名称和 SQL 语句 在设置 subDataSets 数据源时,需要填写数据源名称和 ...

    iReport-JasperReport 报表开发指南

    JasperReport提供了丰富的报表设计功能,包括自定义样式、模板、以及动态数据填充。 iReport作为JasperReport的前端设计工具,允许用户通过图形化界面来设计报表。它支持导入各种数据源,如数据库、XML文件或Java...

    JasperReport6.4.0报表设计

    **JasperReport 6.4.0报表设计详解** JasperReport是一款强大的开源报表工具,广泛应用于Java应用程序中,提供灵活的报告设计和丰富的数据可视化功能。在JasperReport 6.4.0版本中,它继续提升了用户体验,增强了...

    JasperReport动态生成报表

    总结来说,JasperReport通过其强大的报表设计能力、灵活的数据处理和动态生成特性,为企业和开发者提供了高效便捷的报表解决方案。结合源码和配套工具,可以满足多样化的需求,提升数据展示的质量和效率。

    JasperReport报表成型框架

    总结,JasperReport作为一个灵活的报表工具,为开发者提供了丰富的报表设计和数据呈现方式,使其能够在各种Java应用中生成高质量的报表。配合详细的文档和开发注意事项,可以有效地提高开发效率和报表质量。对于那些...

    JasperReport动态报表归并行数据

    通过以上分析,我们可以看出“JasperReport动态报表归并行数据”涉及到的核心概念包括动态报表设计、数据源处理、数据归并、自定义脚本let以及开发工具的使用。掌握这些知识点,能帮助开发者创建出适应各种业务需求...

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

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

    ireport-5.6.0 Jasperreport 报表工具 jar包大全

    iReport是一款开源的报表设计工具,它是基于JasperReports库开发的。用户可以通过它使用拖放界面来设计复杂的报表布局,包括表格、图表、文本等元素。iReport支持SQL查询,可以连接到各种数据库,提供了丰富的预览和...

    jasperreport报表模板预览 applet与servlet通信

    总结一下,本知识点主要涵盖了JasperReport报表设计和预览,以及Applet和Servlet的通信机制。通过理解和实践这些概念,开发者可以构建一个基于Java的Web应用,提供动态生成和预览报表的功能。同时,了解Applet和...

    Struts2与Jasperreport报表结合

    1. 设计报表:使用JasperReport的报表设计工具(如iReport或Jaspersoft Studio)创建报表模板。 2. 配置Struts2:在struts.xml中定义Action,指定处理报表请求的方法。 3. 实现Action:在Action中,加载数据源,执行...

    Struts2+JasperReport报表应用

    JasperReport是一个功能强大的开源报表引擎,允许开发人员通过iReports这样的设计工具以可视化的形式创建复杂的报表模板。Struts2,作为一个流行的Java Web框架,提供了一个灵活的MVC架构,使得在Web应用程序中集成...

    JasperReport+iReport高级报表设计实战

    总结来说,JasperReport+iReport的组合为开发者提供了强大的报表设计能力,不仅能够处理基础的查询展示,还能实现复杂的报表结构和数据处理。通过熟练运用iReport,可以有效地满足项目中的各种报表需求,同时保持...

    JasperReport 水晶报表

    **JasperReport 水晶报表** ...总的来说,JasperReport和水晶报表都是强大的报表工具,它们在数据展现、报表设计和企业应用上都有独特的优势。选择哪个工具取决于具体项目的需求、预算以及开发团队的技术背景。

    springboot整合JasperReport实现报表功能

    而JasperReport是一款强大的开源报表工具,能够帮助开发者创建、设计和展示复杂的业务报告。将两者整合,可以让SpringBoot应用程序轻松地生成和展示各种类型的报表。 在SpringBoot中整合JasperReport,首先你需要在...

Global site tag (gtag.js) - Google Analytics