`

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

    博客分类:
  • java
阅读更多

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

PDF格式的:

java 代码
/**  
 * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd.  
 * @author Jimmy.Shine 2007-5-12  
 */   
package cn.com.reachway.framework.report.export;   
   
import java.io.IOException;   
import java.io.OutputStream;   
import java.net.URLEncoder;   
import java.sql.Connection;   
import java.util.List;   
import java.util.Map;   
   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
   
import net.sf.jasperreports.engine.JRDataSource;   
import net.sf.jasperreports.engine.JRException;   
import net.sf.jasperreports.engine.JRExporterParameter;   
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.engine.export.JRPdfExporter;   
import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;   
import cn.com.reachway.framework.exception.JasperReportException;   
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;   
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;   
   
/**  
 *   
 */   
public class PDFExport {   
   
    /**  
     * 导出报表  
     *   
     * @param request  
     * @param response  
     * @param reportFilePath  
     * @param params  
     * @param con  
     * @param fileName  
     * @throws JasperReportException  
     */   
    public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,   
            Connection con, String fileName) throws JasperReportException {   
   
        JasperPrint jasperPrint = new JasperPrintWithConnection(reportFilePath, params, con).getJasperPrint();   
        // 将填充完的japserPrint放入session中。   
        request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);   
        // 拿到japserPrintList   
        List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);   
        // 若没有JasperPrintList,则抛出异常   
        if (jasperPrintList == null) {   
            throw new JasperReportException("在Http Session中没有找到JasperPrint List");   
        }   
        try {   
            OutputStream ouputStream = response.getOutputStream();   
            try {   
                response.setContentType("application/pdf");   
                response.setCharacterEncoding("UTF-8");   
                if (fileName == null || fileName.equals(""))   
                    response.setHeader("Content-Disposition", "inline; filename=\"noTitle.pdf\"");   
                else   
                    response.setHeader("Content-Disposition", "inline; filename=\""   
                            + URLEncoder.encode(fileName, "UTF-8") + ".pdf\"");   
                // 使用JRPdfExproter导出器导出pdf   
                JRPdfExporter exporter = new JRPdfExporter();   
                // 设置JasperPrintList   
                exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);   
   
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);   
                exporter.exportReport();   
            } catch (JRException e) {   
                e.printStackTrace();   
                throw new JasperReportException("在导出pdf格式报表时发生错误");   
            } finally {   
                if (ouputStream != null) {   
                    try {   
                        ouputStream.close();   
                    } catch (IOException ex) {   
                    }   
                }   
            }   
        } catch (IOException ioe) {   
            ioe.printStackTrace();   
            throw new JasperReportException("从Response中取得OutputStream时发生错误!");   
        }   
    }   
   
    /**  
     * 导出报表  
     *   
     * @param request  
     * @param response  
     * @param reportFilePath  
     * @param params  
     * @param dataSource  
     * @param fileName  
     * @throws JasperReportException  
     */   
    public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,   
            JRDataSource dataSource, String fileName) throws JasperReportException {   
   
        JasperPrint jasperPrint = new JasperPrintWithDataSource(reportFilePath, params, dataSource).getJasperPrint();   
        // 将填充完的japserPrint放入session中。   
        request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);   
        // 拿到japserPrintList   
        List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);   
        // 若没有JasperPrintList,则抛出异常   
        if (jasperPrintList == null) {   
            throw new JasperReportException("在Http Session中没有找到JasperPrint List");   
        }   
        try {   
            OutputStream ouputStream = response.getOutputStream();   
            try {   
                response.setContentType("application/pdf");   
                response.setCharacterEncoding("UTF-8");   
                if (fileName == null || fileName.equals(""))   
                    response.setHeader("Content-Disposition", "inline; filename=\"noTitle.pdf\"");   
                else   
                    response.setHeader("Content-Disposition", "inline; filename=\""   
                            + URLEncoder.encode(fileName, "UTF-8") + ".pdf\"");   
                // 使用JRPdfExproter导出器导出pdf   
                JRPdfExporter exporter = new JRPdfExporter();   
                // 设置JasperPrintList   
                exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);   
   
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);   
                exporter.exportReport();   
            } catch (JRException e) {   
                e.printStackTrace();   
                throw new JasperReportException("在导出pdf格式报表时发生错误");   
            } finally {   
                if (ouputStream != null) {   
                    try {   
                        ouputStream.close();   
                    } catch (IOException ex) {   
                    }   
                }   
            }   
        } catch (IOException ioe) {   
            ioe.printStackTrace();   
            throw new JasperReportException("从Response中取得OutputStream时发生错误!");   
        }   
    }   
   
}   
  
分享到:
评论

相关推荐

    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应用中生成高质量的报表。配合详细的文档和开发注意事项,可以有效地提高开发效率和报表质量。对于那些...

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

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

    JasperReport动态报表归并行数据

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

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

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

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

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

    【ireport-5.6.0 JasperReport 报表工具 jar包大全 Two】是一个针对Java开发人员的重要资源集合,主要用于创建、设计和管理各种复杂的报表。这个压缩包包含了一系列的jar文件,这些文件是JasperReport库的核心组成...

    springboot整合JasperReport实现报表功能

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

Global site tag (gtag.js) - Google Analytics