由于在一个里面不能贴太多的代码,故放置代码在此处。
上接:http://jimmy-shine.iteye.com/blog/78678
下接:http://jimmy-shine.iteye.com/blog/123597
/** * @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格式的:
/** * @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(); }
/** * @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(); } }