iReport+JasperReport實現數據庫記錄導出到html、excel、pdf文檔

本文主要介紹使用iReport以可視化的方式來生成JasperReport所使用的報表格式文件,並經過JasperReport提供的API將數據導出到html、excel、pdf等格式的文件中。html

在這裏iReport的使用版本爲iReport-5.0.4。JasperReport使用的是5.0.4。因爲導出到pdf,JasperReport用到iText庫,因此這裏使用的iText-2.1.7版本。固然不要忘了iTextAsian.jar對中文的支持。java

實現步驟以下:mysql

1.下載安裝iReport-5.0.4。(地址此處省略,本身google)web

2.打開iReport,新建文件:文件—>new

選擇Blank A4,點擊Open this Template,完成報表的建立sql

3.鏈接數據庫數據庫

點擊Report Datasources圖標,彈出下圖對話框。app

new一個新的數據源jsp

選擇JDBC Connection ,設置配置this


Test成功後,保存配置。這裏使用mysql數據庫,數據庫爲surveysdb。google

4.報表鏈接數據庫查詢。

點擊,設置報表查詢的語句,點擊read fields會顯示錶字段結構

點擊ok,iReport界面左邊Fileds會出現數據庫表字段。以下圖所示

5。拖放字段,設計報表格式。將表中字段拖入到detail區域,增長列明和標題,以下圖所示。

6.預覽報表,選擇菜單欄上的preview,選擇要預覽的格式,這裏選擇HTML。點擊下圖中的preview

預覽結果以下。

若選擇excel格式,可導出excel格式到電腦上。

下面就用JasperReport API根據iReport生成的文件將記錄導出到各種文件中。

1.點擊,將編譯生成.jasper文件。

2.將jasper文件拷貝到web工程下

3編寫index.jsp文件,跳轉處處理導出文件的 servlet中。

4.項目須要引入的架包以下圖所示。

 

下面給你們展現處理各類文件導出的代碼。

操做以前要先鏈接數據庫

 

 

導出到Html文件操做。

/**
	 * 導出爲html文件
	 * @param request
	 * @param response
	 */
	private void exportHtml( HttpServletResponse response,Connection conn){
		
		try {
			response.setCharacterEncoding("UTF-8");  
			ServletContext servletContext=this.getServletConfig().getServletContext();
			//獲得jasper文件
			File jasperFile=new File(servletContext.getRealPath("/jasper/Report.jasper"));
			JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile.getPath());
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			JRHtmlExporter exporter = new JRHtmlExporter();
			
			exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter());
			exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
			exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
			exporter.exportReport();
		} catch (JRException e) {
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}

 

導出到excel文件操做。

/**
	 * 導出爲excel文件
	 * @param request
	 * @param response
	 */
	private void exportExcel( HttpServletResponse response,Connection conn){
		try {
			response.setCharacterEncoding("UTF-8");  
			ServletContext servletContext=this.getServletConfig().getServletContext();
			//獲得jasper文件
			File jasperFile=new File(servletContext.getRealPath("/jasper/Report.jasper"));
			JasperReport jasperReport= (JasperReport)JRLoader.loadObject(jasperFile.getPath());
			JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,null,conn);
			JRXlsExporter exporter=new JRXlsExporter();
			exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
			exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
			exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);

			response.setHeader("Content-Disposition", "attachment;filename=first.xls");
			response.setContentType("application/vnd_ms-excel");
			exporter.exportReport();
		} catch (JRException e) {
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		} 
	}

 

導出到pdf文件操做。

/**
	 * 導出爲pdf文件
	 * @param response
	 * @param conn
	 */
	private void exportPdf(HttpServletResponse response, Connection conn) {
		try {
			ServletContext servletContext=this.getServletConfig().getServletContext();
			//獲得jasper文件
			File jasperFile=new File(servletContext.getRealPath("/jasper/Report.jasper"));
			JasperReport jasperReport= (JasperReport)JRLoader.loadObject(jasperFile.getPath());
			JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,null,conn);
			JRPdfExporter exporter = new JRPdfExporter();  
			exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
			
			response.setHeader("Content-Disposition", "attachment;filename=first.pdf");
			response.setContentType("application/pdf");
			response.setCharacterEncoding("UTF-8");  
			exporter.exportReport();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

 

到了這裏就已經完成功能的實現了。在iReport中讀者可使用可視化組件,設計出漂亮美觀的報表。

相關文章
相關標籤/搜索