由于在一个里面不能贴太多的代码,故放置代码在此处。
上接: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();
}
}