天天看點

maven+springmvc+jasperreport導出html、word、excel、pdf開發工具maven中引入jasperreport的jar導出pdf(方法一)導出pdf(方法二)導出pdf(方法三)導出pdf(方法四)導出excel導出WORD導出html

開發工具

ireport 5.6.0

jasperreports 6.0.0

maven中引入jasperreport的jar

                <!-- jasperreports-->
		<dependency>
		    <groupId>net.sf.jasperreports</groupId>
		    <artifactId>jasperreports</artifactId>
		    <version>6.0.0</version>
		</dependency>
		<dependency>
		    <groupId>net.sf.jasperreports</groupId>
		    <artifactId>jasperreports-fonts</artifactId>
		    <version>6.0.0</version>
		</dependency>
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itextpdf</artifactId>
		    <version>5.5.0</version>
		</dependency>
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itext-pdfa</artifactId>
		    <version>5.5.0</version>
		</dependency>
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itext-asian</artifactId>
		    <version>5.2.0</version>
		</dependency>
		<dependency>  
		    <groupId>org.codehaus.groovy</groupId>  
		    <artifactId>groovy-all</artifactId> 
		    <version>2.2.2</version> 
		</dependency> 
           

導出pdf(方法一)

/**
     * 導出pdf
     * @param request
     * @param response
     */
    @RequestMapping(value = "/exportPdf.do")
	public void exportPdf(HttpServletRequest request, HttpServletResponse response){
    	response.setCharacterEncoding("UTF-8");  
    	ServletContext servletContext = request.getSession().getServletContext();
    	String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
		OutputStream out=null;
		Connection conn = null;
		try{
			out =response.getOutputStream();
			conn = dataSource.getConnection();
			
			//得到jasper檔案
			JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
			//null可以改成 map參數
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			
			//設定響應頭    以檔案的方式傳回
			response.setContentType("application/pdf");
			response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的pdf","utf8"));
			
			JRPdfExporter exporter = new JRPdfExporter();
			JasperReportsUtils.render(exporter, jasperPrint,out);
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			{
		          try {
		             conn.close();
		             out.flush();
		 			 out.close();
		          }catch(SQLException e) {
		             e.printStackTrace();
		          }catch(IOException e) {
		             e.printStackTrace();
		          }
		      }
		}
	}
           

導出pdf(方法二)

将上面方法中的

JRPdfExporter exporter = new JRPdfExporter();
JasperReportsUtils.render(exporter, jasperPrint,out);
           

去掉,添加

JasperExportManager.exportReportToPdfStream(jasperPrint, out);
           

導出pdf(方法三)

/**
     * 導出pdf3
     * @param request
     * @param response
     */
    @RequestMapping(value = "/exportPdf3.do")
	public void exportPdf3(HttpServletRequest request, HttpServletResponse response){
    	response.setCharacterEncoding("UTF-8");  
    	ServletContext servletContext = request.getSession().getServletContext();
    	String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
		OutputStream out=null;
		Connection conn = null;
		try{
			out =response.getOutputStream();
			conn = dataSource.getConnection();
			
			response.setContentType("application/pdf");
			response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的pdf","utf8"));
			
			//null可以改成 map參數
			byte[] bytes = JasperRunManager.runReportToPdf(root_path, null,conn);
			
	                 response.setContentLength(bytes.length);
	                 out.write(bytes,0,bytes.length);
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			{
		          try {
		             conn.close();
		             out.flush();
		 			out.close();
		          }catch(SQLException e) {
		             e.printStackTrace();
		          }catch(IOException e) {
		             e.printStackTrace();
		          }
		      }
		}
	}
           

導出pdf(方法四)

/**
     * 導出pdf4
     * @param request
     * @param response
     */
    @RequestMapping(value = "/exportPdf4.do")
	public void exportPdf4(HttpServletRequest request, HttpServletResponse response){
    	response.setCharacterEncoding("UTF-8");  
    	ServletContext servletContext = request.getSession().getServletContext();
    	String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
		OutputStream out=null;
		Connection conn = null;
		try{
			out =response.getOutputStream();
			conn = dataSource.getConnection();
			
			//得到jasper檔案
			JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			
			response.setContentType("application/pdf");
			response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的pdf","utf8"));
			
			JRPdfExporter exporter = new JRPdfExporter();
			 //設定輸入項  
	                ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);  
	                exporter.setExporterInput(exporterInput);  
	                    
	                //設定輸出項  
	                OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream());  
	                exporter.setExporterOutput(exporterOutput); 
			
			exporter.exportReport();
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			{
		          try {
		             conn.close();
		             out.flush();
		 	     out.close();
		          }catch(SQLException e) {
		             e.printStackTrace();
		          }catch(IOException e) {
		             e.printStackTrace();
		          }
		      }
		}
	}
    
           

導出excel

/**
     * 導出Ecxel
     * @param request
     * @param response
     * @param path
     * @param reportName
     */
    @RequestMapping(value = "/exportExcel.do")
	public void exportExcel(HttpServletRequest request, HttpServletResponse response){
    	response.setCharacterEncoding("UTF-8");  
    	ServletContext servletContext = request.getSession().getServletContext();
    	String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
		OutputStream os=null;
		Connection conn = null;
		try{
			os = response.getOutputStream();
			conn = dataSource.getConnection();
			
			//得到jasper檔案
			JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			
			JRXlsxExporter exporter = new JRXlsxExporter();  
	                //設定輸入項  
	                ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);  
	                exporter.setExporterInput(exporterInput);  
	                    
	                //設定輸出項  
	                OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream());  
	                exporter.setExporterOutput(exporterOutput); 
	        
	                //設定響應方式
	                String generateFileName = "我的檔案.xlsx";  
	                response.setContentType("application/vnd.ms-excel");  
	                response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode(generateFileName,"utf8"));
	        
	                exporter.exportReport();  
	        
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				conn.close();
				os.flush();
				os.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}catch (IOException  e) {
				e.printStackTrace();
			}
			
		}
	}
           

導出WORD

/**
     * 導出word
     * @param request
     * @param response
     * @param path
     * @param reportName
     */
    @RequestMapping(value = "/exportWord.do")
	public void exportWord(HttpServletRequest request, HttpServletResponse response){
    	response.setCharacterEncoding("UTF-8");  
    	ServletContext servletContext = request.getSession().getServletContext();
    	String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
		OutputStream out=null;
		Connection conn = null;
		try{
			out =response.getOutputStream();
			conn = dataSource.getConnection();
			
			//得到jasper檔案
			JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			
			response.setContentType("application/msword");
			response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("我的word","utf8"));
			
			JRDocxExporter exporter = new JRDocxExporter();
			
			JasperReportsUtils.render(exporter, jasperPrint,out);
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			{
		          try {
		             conn.close();
		             out.flush();
		 			out.close();
		          }catch(SQLException e) {
		             e.printStackTrace();
		          }catch(IOException e) {
		             e.printStackTrace();
		          }
		      }
		}
	}
           

導出html

/**
     * 導出html
     * @param request
     * @param response
     * @param path
     * @param reportName
     */
    @RequestMapping(value = "/exportHtml.do")
	public void exportHtml(HttpServletRequest request, HttpServletResponse response ){
    	
    	response.setCharacterEncoding("UTF-8");  
    	ServletContext servletContext = request.getSession().getServletContext();
    	String root_path = servletContext.getRealPath("/WEB-INF/report/"+"input_value_detail.jasper");//報表目錄路徑
		
		OutputStream os=null;
		Connection conn = null;
		try{
			os = response.getOutputStream();
			conn = dataSource.getConnection();
			
			//得到jasper檔案
			JasperReport jasperReport =(JasperReport)JRLoader.loadObjectFromFile(root_path);
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			
		        JRAbstractExporter exporter = new JRHtmlExporter();
		        response.reset();
		        response.setContentType("text/html");
		        response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode("我的html","utf8"));
		        JasperReportsUtils.render(exporter, jasperPrint,os);
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				conn.close();
				os.flush();
				os.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}catch (IOException  e) {
				e.printStackTrace();
			}
			
		}
	}