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

jopen 11年前發布 | 101K 次閱讀 iReport JasperReport 圖表/報表制作

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

在這里iReport的使用版本為iReport-5.0.4。JasperReport使用的是5.0.4。由于導出到pdf,JasperReport用到iText庫,所以這里使用的iText-2.1.7版本。當然不要忘了iTextAsian.jar對中文的支持。

實現步驟如下:

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

2.打開iReport,新建文件:文件—>newiReport+JasperReport實現數據庫記錄導出到html、excel、pdf文檔

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

3.連接數據庫

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

點擊Report Datasources圖標,彈出下圖對話框。iReport+JasperReport實現數據庫記錄導出到html、excel、pdf文檔

new一個新的數據源

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

選擇JDBC Connection ,設置配置


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

Test成功后,保存配置。這里使用mysql數據庫,數據庫為surveysdb。

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

點擊iReport+JasperReport實現數據庫記錄導出到html、excel、pdf文檔,設置報表查詢的語句,點擊read fields會顯示表字段結構

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

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

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

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

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

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

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

預覽結果如下。

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

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

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

1.點擊iReport+JasperReport實現數據庫記錄導出到html、excel、pdf文檔,將編譯生成.jasper文件。

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

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

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

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

4.項目需要引入的架包如下圖所示。

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

下面給大家展示處理各種文件導出的代碼。

操作之前要先連接數據庫

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

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

導出到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中讀者可以使用可視化組件,設計出漂亮美觀的報表。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!