報表開發之大量匯入匯出excel,報表匯入匯出excel

來源:互聯網
上載者:User

報表開發之大量匯入匯出excel,報表匯入匯出excel

在日常使用報表過程中,會有這樣一種情況,你將Excel表分發給各個員工,員工填完後,統一整理成多個Excel,你需要將這些資料,用報表的填報功能,提交錄入到資料庫中,這樣一來可避免到伺服器機房錄資料的繁瑣步驟,但是無論是大量匯入和還是匯出Excel,這對諸多報表軟體或稱整合報表功能的系統來說都是不容易的。

解決Excel匯入的效能問題,可以利用FineReport開發的op=excel_submit功能,來實現不預覽報表即可對填報表匯入Excel。

根據報表工程的使用方式不同,大量匯入Excel中許可權控制方式有所不同。

報表工程一般有以下兩種方式:

1、使用FineReport自主開發的資料決策系統op=fs使用報表工程;

2、將報表工程整合到自己的系統中。

1.1 直接使用op=fs

使用者使用資料決策系統op=fs查看報表,那麼所有的許可權都是通過op=fs進行認證,使用者也都是添加在op=fs中。

1.2 整合FR報表工程

使用者將FR報表工程整合到自己的系統中,通過自己的系統查看報表,那麼FR所有的許可權都是通過報表平台管理op=fr_platform進行認證,詳細請查許可權管理。

除了大量匯入,還有大量匯出。一張報表可以根據不同的條件統計出不同的資料結果,有時希望將每一種條件下的結果都儲存下來如匯出成Excel檔案至磁碟,可以在後台調用FineReport的匯出介面ExcelExporter將每種情況下的結果批量儲存起來。

實現的原理是遍曆讀取para.txt中的每組參數值,將該參數值組合傳入模板進行計算,然後將結果匯出excel,迴圈直至最後一條參數組合。

例如:

由於我們需要對模板輸入參數對應的值才能夠計算得到最終的結果,因此我們需要所有可能的參數值組合,可以來源於資料庫中某個表,或者某個檔案。這裡我們假設所需的參數值組合儲存在WebReport\WEB-INF\para.txt中。如建立para.txt

如果模板有兩個參數格式如下:

 

大量匯出程式,完整代碼如下:

package com.fr.io;            import java.io.BufferedReader;      import java.io.File;      import java.io.FileInputStream;      import java.io.FileOutputStream;      import java.io.InputStreamReader;      import java.io.OutputStream;      import java.util.Arrays;      import com.fr.base.FRContext;      import com.fr.general.ModuleContext;import com.fr.dav.LocalEnv;    import com.fr.io.exporter.ExcelExporter;  import com.fr.main.TemplateWorkBook;    import com.fr.main.workbook.ResultWorkBook;import com.fr.report.module.EngineModule;import com.fr.stable.StableUtils;  import com.fr.stable.WriteActor;             public class ExportBatch {           public static void main(String[] args) {               try {                   // 定義報表運行環境,用於執行報表                   String envpath = "D:\\FineReport_7.1\\WebReport\\WEB-INF";                   FRContext.setCurrentEnv(new LocalEnv(envpath));         ModuleContext.startModule(EngineModule.class.getName());        // 讀取環境下的模板檔案        TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(),            "doc\\Primary\\DetailReport\\Details.cpt");        // 讀取用於儲存的參數值的txt檔案        File parafile = new File(envpath + "\\para.txt");        FileInputStream fileinputstream;        fileinputstream = new FileInputStream(parafile);        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileinputstream));        // 定義儲存參數的map,用於執行報表        java.util.Map paramap = new java.util.HashMap();        /*       * 遍曆參數值所在txt檔案,txt檔案中參數儲存形式為 para1,para2 江蘇,陳羽 江蘇,安娜 首先取出第一行儲存參數名稱       * 遍曆每個參數組合,如para1=江蘇、para2=陳羽,根據參數執行模板,並將結果匯出excel excel檔案名稱為名稱+匯出編號       */        // 讀第一行,儲存參數名稱        String lineText = bufferedReader.readLine();        lineText = lineText.trim();        String[] paraname = StableUtils.splitString(lineText, ",");        System.out.println(Arrays.toString(paraname));        // 遍曆每個參數組合,執行模板,匯出結果        int number = 0;        while ((lineText = bufferedReader.readLine()) != null) {            lineText = lineText.trim();            String[] paravalue = StableUtils.splitString(lineText, ",");            for (int j = 0; j < paravalue.length; j++) {                paramap.put(paraname[j], paravalue[j]);            }            ResultWorkBook result = workbook.execute(paramap,new WriteActor());          OutputStream outputstream = new FileOutputStream(new File("E:\\ExportEg" + number + ".xls"));            ExcelExporter excelexporter = new ExcelExporter();            excelexporter.export(outputstream, result);            // 最後要清空一下參數map,用於下次計算            paramap.clear();            number++;            outputstream.close();          }     ModuleContext.stopModules();    } catch (Exception e) {            e.printStackTrace();        }              }    }  

上述為樣本程式,其中報表運行環境與模板名稱等需要根據您實際環境進行修改。編譯運行該程式您便可以得到結果,在E盤根目錄下將產生3個Excel檔案,如下

內容分別為

 

這樣大量匯出便成功了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.