`

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

    博客分类:
  • java
阅读更多

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

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.PrintWriter;   
import java.sql.Connection;   
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.JRExporterParameter;   
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.engine.export.JRHtmlExporter;   
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;   
import net.sf.jasperreports.j2ee.servlets.ImageServlet;   
import cn.com.reachway.framework.exception.JasperReportException;   
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithConnection;   
import cn.com.reachway.framework.report.jasperPrint.JasperPrintWithDataSource;   
   
/**  
 * 利用报表生成HTML格式报表  
 */   
public class HTMLExport {   
   
    /**  
     * 导出报表  
     *   
     * @param request  
     * @param response  
     * @param reportFilePath  
     * @param params  
     * @param con  
     * @throws JasperReportException  
     */   
    public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,   
            Connection con) throws JasperReportException {   
        try {   
            PrintWriter out = response.getWriter();   
            try {   
                response.setContentType("text/html;charset=UTF-8");   
                JasperPrint jasperPrint = new JasperPrintWithConnection(reportFilePath, params, con).getJasperPrint();   
                // 使用JRHtmlExproter导出Html格式   
                JRHtmlExporter exporter = new JRHtmlExporter();   
                request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);   
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);   
                exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);   
                exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "./servlets/image?image=");   
                exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");   
                // 导出   
                exporter.exportReport();   
            } catch (Exception e) {   
                e.printStackTrace();   
                throw new JasperReportException("在导出Html格式报表时发生错误!");   
            } finally {   
                if (out != null) {   
                    try {   
                        out.close();   
                    } catch (Exception e) {   
                    }   
                }   
            }   
        } catch (IOException ioe) {   
            ioe.printStackTrace();   
            throw new JasperReportException("从Response中取得PrintWriter时发生错误!");   
        }   
    }   
   
    /**  
     * 导出报表  
     *   
     * @param request  
     * @param response  
     * @param reportFilePath  
     * @param params  
     * @param dataSource  
     * @throws JasperReportException  
     */   
    public void export(HttpServletRequest request, HttpServletResponse response, String reportFilePath, Map params,   
            JRDataSource dataSource) throws JasperReportException {   
        try {   
            PrintWriter out = response.getWriter();   
            try {   
                response.setContentType("text/html;charset=UTF-8");   
                JasperPrint jasperPrint = new JasperPrintWithDataSource(reportFilePath, params, dataSource)   
                        .getJasperPrint();   
                // 使用JRHtmlExproter导出Html格式   
                JRHtmlExporter exporter = new JRHtmlExporter();   
                request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);   
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);   
                exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);   
                exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "./servlets/image?image=");   
                exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");   
                // 导出   
                exporter.exportReport();   
            } catch (Exception e) {   
                e.printStackTrace();   
                throw new JasperReportException("在导出Html格式报表时发生错误!");   
            } finally {   
                if (out != null) {   
                    try {   
                        out.close();   
                    } catch (Exception e) {   
                    }   
                }   
            }   
        } catch (IOException ioe) {   
            ioe.printStackTrace();   
            throw new JasperReportException("从Response中取得PrintWriter时发生错误!");   
        }   
    }   
   
}   
 Excel格式的:
java 代码
/**  
 * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd.  
 * @author Jimmy.Shine 2007-5-13  
 */   
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.JRXlsAbstractExporter;   
import net.sf.jasperreports.engine.export.JRXlsAbstractExporterParameter;   
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;   
   
/**  
 * 利用报表生成Xls的基类  
 */   
public abstract class BaseExcelExport {   
    /**  
     * 导出报表  
     *   
     * @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/xls");   
                response.setCharacterEncoding("UTF-8");   
                if (fileName == null || fileName.equals(""))   
                    response.setHeader("Content-Disposition", "inline; filename=\"noTitle.xls\"");   
                else {   
                    response.setHeader("Content-Disposition", "inline; filename=\""   
                            + URLEncoder.encode(fileName, "UTF-8") + ".xls\"");   
   
                }   
                // Xls格式的导出器 JRXlsAbstractExport   
                JRXlsAbstractExporter exporter = getXlsExporter();   
   
                // 在导出器中放入要导出的japserPrintList   
                exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);   
   
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);   
                // 设置Xls的属性   
                exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);   
                exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);   
                // 导出   
                exporter.exportReport();   
            } catch (JRException e) {   
                e.printStackTrace();   
                throw new JasperReportException("在生成XLS报表时发生错误!");   
            }   
   
            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/xls");   
                response.setCharacterEncoding("UTF-8");   
                if (fileName == null || fileName.equals(""))   
                    response.setHeader("Content-Disposition", "inline; filename=\"noTitle.xls\"");   
                else {   
                    response.setHeader("Content-Disposition", "inline; filename=\""   
                            + URLEncoder.encode(fileName, "UTF-8") + ".xls\"");   
   
                }   
                // Xls格式的导出器 JRXlsAbstractExport   
                JRXlsAbstractExporter exporter = getXlsExporter();   
   
                // 在导出器中放入要导出的japserPrintList   
                exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);   
   
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);   
                // 设置Xls的属性   
                exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);   
                exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);   
                // 导出   
                exporter.exportReport();   
            } catch (JRException e) {   
                e.printStackTrace();   
                throw new JasperReportException("在生成XLS报表时发生错误!");   
            }   
   
            finally {   
                if (ouputStream != null) {   
                    try {   
                        ouputStream.close();   
                    } catch (IOException ex) {   
                    }   
                }   
            }   
        } catch (IOException ioe) {   
            ioe.printStackTrace();   
            throw new JasperReportException("从Response中取得OutputStream时发生错误!");   
        }   
   
    }   
   
    protected abstract JRXlsAbstractExporter getXlsExporter();   
   
}   
  
java 代码
/**  
 * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd.  
 * @author Jimmy.Shine 2007-5-13  
 */   
package cn.com.reachway.framework.report.export;   
   
import net.sf.jasperreports.engine.export.JRXlsAbstractExporter;   
import net.sf.jasperreports.engine.export.JRXlsExporter;   
   
/**  
 * 利用报表使用POI生成XLS报表  
 */   
public class XlsPOIExport extends BaseExcelExport {   
   
    protected JRXlsAbstractExporter getXlsExporter() {   
        return new JRXlsExporter();   
    }   
   
}   
     
 java 代码
/**  
 * @copyRight Beijing Tsing-Tech Reachway Software Co.,Ltd.  
 * @author Jimmy.Shine 2007-5-13  
 */   
package cn.com.reachway.framework.report.export;   
   
import net.sf.jasperreports.engine.export.JExcelApiExporter;   
import net.sf.jasperreports.engine.export.JRXlsAbstractExporter;   
   
/**  
 * 利用报表使用JExcel生成xls报表  
 */   
public class XlsJExcelExport extends BaseExcelExport {   
   
    protected JRXlsAbstractExporter getXlsExporter() {   
        return new JExcelApiExporter();   
    }   
}     
 
分享到:
评论

相关推荐

    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