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