JasperReport报表设计总结(二)

JasperReport报表设计总结(二)

由于在一个里面不能贴太多的代码,故放置代码在此处。

上接: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();

}

}

猜您喜欢

精彩推荐