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

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

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

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.PrintWriter;  
  9. import java.sql.Connection;  
  10. import java.util.Map;  
  11.   
  12. import javax.servlet.http.HttpServletRequest;  
  13. import javax.servlet.http.HttpServletResponse;  
  14.   
  15. import net.sf.jasperreports.engine.JRDataSource;  
  16. import net.sf.jasperreports.engine.JRExporterParameter;  
  17. import net.sf.jasperreports.engine.JasperPrint;  
  18. import net.sf.jasperreports.engine.export.JRHtmlExporter;  
  19. import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;  
  20. import net.sf.jasperreports.j2ee.servlets.ImageServlet;  
  21. import cn.com.reachway.framework.exception.JasperReportException;  
  22. import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;  
  23. import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;  
  24.   
  25. /** 
  26.  * 利用报表生成HTML格式报表 
  27.  */  
  28. public class HTMLExport {  
  29.   
  30.     /** 
  31.      * 导出报表 
  32.      *  
  33.      * @param request 
  34.      * @param response 
  35.      * @param reportFilePath 
  36.      * @param params 
  37.      * @param con 
  38.      * @throws JasperReportException 
  39.      */  
  40.     public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,  
  41.             Connection con) throws JasperReportException {  
  42.         try {  
  43.             PrintWriter out = response.getWriter();  
  44.             try {  
  45.                 response.setContentType("text/html;charset=UTF-8");  
  46.                 JasperPrint jasperPrint = new JasperPrintWithConnection(reportFilePath, params, con).getJasperPrint();  
  47.                 // 使用JRHtmlExproter导出Html格式  
  48.                 JRHtmlExporter exporter = new JRHtmlExporter();  
  49.                 request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  50.                 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
  51.                 exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);  
  52.                 exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "./servlets/image?image=");  
  53.                 exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");  
  54.                 // 导出  
  55.                 exporter.exportReport();  
  56.             } catch (Exception e) {  
  57.                 e.printStackTrace();  
  58.                 throw new JasperReportException("在导出Html格式报表时发生错误!");  
  59.             } finally {  
  60.                 if (out != null) {  
  61.                     try {  
  62.                         out.close();  
  63.                     } catch (Exception e) {  
  64.                     }  
  65.                 }  
  66.             }  
  67.         } catch (IOException ioe) {  
  68.             ioe.printStackTrace();  
  69.             throw new JasperReportException("从Response中取得PrintWriter时发生错误!");  
  70.         }  
  71.     }  
  72.   
  73.     /** 
  74.      * 导出报表 
  75.      *  
  76.      * @param request 
  77.      * @param response 
  78.      * @param reportFilePath 
  79.      * @param params 
  80.      * @param dataSource 
  81.      * @throws JasperReportException 
  82.      */  
  83.     public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,  
  84.             JRDataSource dataSource) throws JasperReportException {  
  85.         try {  
  86.             PrintWriter out = response.getWriter();  
  87.             try {  
  88.                 response.setContentType("text/html;charset=UTF-8");  
  89.                 JasperPrint jasperPrint = new JasperPrintWithDataSource(reportFilePath, params, dataSource)  
  90.                         .getJasperPrint();  
  91.                 // 使用JRHtmlExproter导出Html格式  
  92.                 JRHtmlExporter exporter = new JRHtmlExporter();  
  93.                 request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  94.                 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
  95.                 exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);  
  96.                 exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "./servlets/image?image=");  
  97.                 exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");  
  98.                 // 导出  
  99.                 exporter.exportReport();  
  100.             } catch (Exception e) {  
  101.                 e.printStackTrace();  
  102.                 throw new JasperReportException("在导出Html格式报表时发生错误!");  
  103.             } finally {  
  104.                 if (out != null) {  
  105.                     try {  
  106.                         out.close();  
  107.                     } catch (Exception e) {  
  108.                     }  
  109.                 }  
  110.             }  
  111.         } catch (IOException ioe) {  
  112.             ioe.printStackTrace();  
  113.             throw new JasperReportException("从Response中取得PrintWriter时发生错误!");  
  114.         }  
  115.     }  
  116.   
  117. }  
Excel格式的:
java 代码
 
  1. /** 
  2.  * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd. 
  3.  * @author Jimmy.Shine 2007-5-13 
  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.JRXlsAbstractExporter;  
  22. import net.sf.jasperreports.engine.export.JRXlsAbstractExporterParameter;  
  23. import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;  
  24. import cn.com.reachway.framework.exception.JasperReportException;  
  25. import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;  
  26. import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;  
  27.   
  28. /** 
  29.  * 利用报表生成Xls的基类 
  30.  */  
  31. public abstract class BaseExcelExport {  
  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.         JasperPrint jasperPrint = new JasperPrintWithConnection(reportFilePath, params, con).getJasperPrint();  
  46.         // 将填充完的japserPrint放入session中。  
  47.         request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  48.         // 拿到japserPrintList  
  49.         List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);  
  50.         // 若没有JasperPrintList,则抛出异常  
  51.         if (jasperPrintList == null) {  
  52.             throw new JasperReportException("在Http Session中没有找到JasperPrint List");  
  53.         }  
  54.         try {  
  55.             OutputStream ouputStream = response.getOutputStream();  
  56.             try {  
  57.   
  58.                 response.setContentType("application/xls");  
  59.                 response.setCharacterEncoding("UTF-8");  
  60.                 if (fileName == null || fileName.equals(""))  
  61.                     response.setHeader("Content-Disposition""inline; filename=\"noTitle.xls\"");  
  62.                 else {  
  63.                     response.setHeader("Content-Disposition""inline; filename=\""  
  64.                             + URLEncoder.encode(fileName, "UTF-8") + ".xls\"");  
  65.   
  66.                 }  
  67.                 // Xls格式的导出器 JRXlsAbstractExport  
  68.                 JRXlsAbstractExporter exporter = getXlsExporter();  
  69.   
  70.                 // 在导出器中放入要导出的japserPrintList  
  71.                 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);  
  72.   
  73.                 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);  
  74.                 // 设置Xls的属性  
  75.                 exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);  
  76.                 exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);  
  77.                 // 导出  
  78.                 exporter.exportReport();  
  79.             } catch (JRException e) {  
  80.                 e.printStackTrace();  
  81.                 throw new JasperReportException("在生成XLS报表时发生错误!");  
  82.             }  
  83.   
  84.             finally {  
  85.                 if (ouputStream != null) {  
  86.                     try {  
  87.                         ouputStream.close();  
  88.                     } catch (IOException ex) {  
  89.                     }  
  90.                 }  
  91.             }  
  92.         } catch (IOException ioe) {  
  93.             ioe.printStackTrace();  
  94.             throw new JasperReportException("从Response中取得OutputStream时发生错误!");  
  95.         }  
  96.   
  97.     }  
  98.   
  99.     /** 
  100.      * 导出报表 
  101.      *  
  102.      * @param request 
  103.      * @param response 
  104.      * @param reportFilePath 
  105.      * @param params 
  106.      * @param dataSource 
  107.      * @param fileName 
  108.      * @throws JasperReportException 
  109.      */  
  110.     public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,  
  111.             JRDataSource dataSource, String fileName) throws JasperReportException {  
  112.         JasperPrint jasperPrint = new JasperPrintWithDataSource(reportFilePath, params, dataSource).getJasperPrint();  
  113.         // 将填充完的japserPrint放入session中。  
  114.         request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  115.         // 拿到japserPrintList  
  116.         List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);  
  117.         // 若没有JasperPrintList,则抛出异常  
  118.         if (jasperPrintList == null) {  
  119.             throw new JasperReportException("在Http Session中没有找到JasperPrint List");  
  120.         }  
  121.         try {  
  122.             OutputStream ouputStream = response.getOutputStream();  
  123.             try {  
  124.   
  125.                 response.setContentType("application/xls");  
  126.                 response.setCharacterEncoding("UTF-8");  
  127.                 if (fileName == null || fileName.equals(""))  
  128.                     response.setHeader("Content-Disposition""inline; filename=\"noTitle.xls\"");  
  129.                 else {  
  130.                     response.setHeader("Content-Disposition""inline; filename=\""  
  131.                             + URLEncoder.encode(fileName, "UTF-8") + ".xls\"");  
  132.   
  133.                 }  
  134.                 // Xls格式的导出器 JRXlsAbstractExport  
  135.                 JRXlsAbstractExporter exporter = getXlsExporter();  
  136.   
  137.                 // 在导出器中放入要导出的japserPrintList  
  138.                 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);  
  139.   
  140.                 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);  
  141.                 // 设置Xls的属性  
  142.                 exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);  
  143.                 exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);  
  144.                 // 导出  
  145.                 exporter.exportReport();  
  146.             } catch (JRException e) {  
  147.                 e.printStackTrace();  
  148.                 throw new JasperReportException("在生成XLS报表时发生错误!");  
  149.             }  
  150.   
  151.             finally {  
  152.                 if (ouputStream != null) {  
  153.                     try {  
  154.                         ouputStream.close();  
  155.                     } catch (IOException ex) {  
  156.                     }  
  157.                 }  
  158.             }  
  159.         } catch (IOException ioe) {  
  160.             ioe.printStackTrace();  
  161.             throw new JasperReportException("从Response中取得OutputStream时发生错误!");  
  162.         }  
  163.   
  164.     }  
  165.   
  166.     protected abstract JRXlsAbstractExporter getXlsExporter();  
  167.   
  168. }  
java 代码
 
  1. /** 
  2.  * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd. 
  3.  * @author Jimmy.Shine 2007-5-13 
  4.  */  
  5. package cn.com.reachway.framework.report.export;  
  6.   
  7. import net.sf.jasperreports.engine.export.JRXlsAbstractExporter;  
  8. import net.sf.jasperreports.engine.export.JRXlsExporter;  
  9.   
  10. /** 
  11.  * 利用报表使用POI生成XLS报表 
  12.  */  
  13. public class XlsPOIExport extends BaseExcelExport {  
  14.   
  15.     protected JRXlsAbstractExporter getXlsExporter() {  
  16.         return new JRXlsExporter();  
  17.     }  
  18.   
  19. }  
  20.     
java 代码
 
  1. /** 
  2.  * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd. 
  3.  * @author Jimmy.Shine 2007-5-13 
  4.  */  
  5. package cn.com.reachway.framework.report.export;  
  6.   
  7. import net.sf.jasperreports.engine.export.JExcelApiExporter;  
  8. import net.sf.jasperreports.engine.export.JRXlsAbstractExporter;  
  9.   
  10. /** 
  11.  * 利用报表使用JExcel生成xls报表 
  12.  */  
  13. public class XlsJExcelExport extends BaseExcelExport {  
  14.   
  15.     protected JRXlsAbstractExporter getXlsExporter() {  
  16.         return new JExcelApiExporter();  
  17.     }  
  18. }    
分享到:
评论
6 楼 水土第一 2014-02-26  
windowshead 写道
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;  
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;   这个 二个类是什么类?能否提供一下~!

第一篇有的。。。。
5 楼 zhaohuan_xiao 2012-11-14  
好久之前的文章了,不知道还有人看不!
我把代码加入项目中
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());  
这里异常:
at net.sf.jasperreports.engine.JRPropertiesMap.readObject
在网上找了方法 没解决。
4 楼 windowshead 2008-07-20  
谢谢你能提供二个类,但是我还是运行不起来,郁闷中....!能不能给一个demo给参考一下,谢谢了~!
3 楼 windowshead 2008-07-17  
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;  
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;   这个 二个类是什么类?能否提供一下~!
2 楼 changyang 2007-12-05  
protected JRXlsAbstractExporter getXlsExporter() {  
        return new JExcelApiExporter();  
    }  
晕了几天,才发现JRXlsExporter导不出图片,源码中的imageexport(...)居然是空的,哈哈,多谢了
1 楼 lifei800 2007-11-28  
为什么将填充完的japserPrint放入session中呢?

相关推荐

    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...

    JasperReport动态生成报表

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

    JasperReport6.4.0报表设计

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

    JasperReport报表成型框架

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

    JasperReport动态报表归并行数据

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

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

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

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

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

    Struts2与Jasperreport报表结合

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

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

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

    JasperReport+iReport高级报表设计实战

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

    Struts2+JasperReport报表应用

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

    JasperReport 水晶报表

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

    springboot整合JasperReport实现报表功能

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

Global site tag (gtag.js) - Google Analytics