第一,二,三,四步请参照:JasperReport+Servlet Web应用之:打印
导PDF文件的Servlet如下:
package com.mengya.servlet; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.util.FileBufferedOutputStream; import net.sf.jasperreports.engine.util.JRLoader; import com.mengya.JRDataSource.PersonDataSource; public class JRPDFServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = this.getServletConfig() .getServletContext(); File jasperFile = new File(servletContext .getRealPath("/jasper/preson.jasper")); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("year", "2009"); parameters.put("unit_mc", "武汉XX科技有限公司"); JasperPrint jasperPrint = null; try { JasperReport jasperReport = (JasperReport) JRLoader .loadObject(jasperFile.getPath()); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new PersonDataSource()); } catch (JRException e) { e.printStackTrace(); } if (null != jasperPrint) { FileBufferedOutputStream fbos = new FileBufferedOutputStream(); JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); try { exporter.exportReport(); fbos.close(); if (fbos.size() > 0) { response.setContentType("application/pdf"); response.setContentLength(fbos.size()); ServletOutputStream ouputStream = response.getOutputStream(); try { fbos.writeData(ouputStream); fbos.dispose(); ouputStream.flush(); } finally { if (null != ouputStream) { ouputStream.close(); } } } } catch (JRException e1) { e1.printStackTrace(); }finally{ if(null !=fbos){ fbos.close(); fbos.dispose(); } } } } }
?
导Excel文件的Servlet如下:
public class JRJXLServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletConfig().getServletContext(); File jasperFile = new File(context.getRealPath("/jasper/preson.jasper")); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("year", "2009"); parameters.put("unit_mc", "武汉XX科技有限公司"); JasperPrint jasperPrint = null; try { JasperReport jasperReport = (JasperReport) JRLoader .loadObject(jasperFile); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new PersonDataSource()); } catch (JRException e) { e.printStackTrace(); } if(null != jasperPrint){ FileBufferedOutputStream fbos = new FileBufferedOutputStream(); JRXlsAbstractExporter exporter = new JExcelApiExporter(); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); try { exporter.exportReport(); fbos.close(); if (fbos.size() > 0) { response.setContentType("application/exl"); response.setHeader("Content-Disposition", "inline; filename=\"persons.xls\""); response.setContentLength(fbos.size()); ServletOutputStream ouputStream = response.getOutputStream(); try { fbos.writeData(ouputStream); fbos.dispose(); ouputStream.flush(); } finally { if (null != ouputStream) { ouputStream.close(); } } } } catch (JRException e1) { e1.printStackTrace(); }finally{ if(null !=fbos){ fbos.close(); fbos.dispose(); } } } } }
?
导rtf文件的servlet如下:
public class JRRTFServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletConfig().getServletContext(); File jasperFile = new File(context.getRealPath("/jasper/preson.jasper")); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("year", "2009"); parameters.put("unit_mc", "武汉XX科技有限公司"); JasperPrint jasperPrint = null; try { JasperReport jasperReport = (JasperReport) JRLoader .loadObject(jasperFile); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new PersonDataSource()); } catch (JRException e) { e.printStackTrace(); } if(null != jasperPrint){ FileBufferedOutputStream fbos = new FileBufferedOutputStream(); JRRtfExporter exporter = new JRRtfExporter(); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fbos); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); try { exporter.exportReport(); fbos.close(); if (fbos.size() > 0) { response.setContentType("application/rtf"); response.setHeader("Content-Disposition", "inline; filename=\"person.rtf\""); response.setContentLength(fbos.size()); ServletOutputStream ouputStream = response.getOutputStream(); try { fbos.writeData(ouputStream); fbos.dispose(); ouputStream.flush(); } finally { if (null != ouputStream) { ouputStream.close(); } } } } catch (JRException e1) { e1.printStackTrace(); }finally{ if(null !=fbos){ fbos.close(); fbos.dispose(); } } } } }
?
该Servlet在web.xml配置如下:
<servlet> <servlet-name>JRPDFServlet</servlet-name> <servlet-class>com.mengya.servlet.JRPDFServlet</servlet-class> </servlet> <servlet> <servlet-name>JREXLServlet</servlet-name> <servlet-class>com.mengya.servlet.JREXLServlet</servlet-class> </servlet> <servlet> <servlet-name>JRRTFServlet</servlet-name> <servlet-class>com.mengya.servlet.JRRTFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JRPDFServlet</servlet-name> <url-pattern>/JRPDFServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>JREXLServlet</servlet-name> <url-pattern>/JREXLServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>JRRTFServlet</servlet-name> <url-pattern>/JRRTFServlet</url-pattern> </servlet-mapping>
?页面调用如下:
h3><a href="JRPDFServlet">导出PDF文件</a></h3> <br> <h3><a href="JREXLServlet">导出EXL文件</a></h3> <br> <h3><a href="JRRTFServlet">导出RTF文件</a></h3> <br>
??
1 楼
speed_guo
2010-04-23
多谢,正在学习这个
2 楼
csxthui123
2011-09-26
大虾! 有个问题请教一下。 如愿意请加qq: 463150644 . 感激不尽!