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

由于在一个里面不能贴太多的代码,故放置代码在此处。
上接: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时发生错误!");   
        }   
    }   
   
}   
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值