<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報表軟件技術(shù)博客

    java報表軟件技術(shù)匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    在日常使用報表過程中,會有這樣一種情況,你將Excel表分發(fā)給各個員工,員工填完后,統(tǒng)一整理成多個Excel,你需要將這些數(shù)據(jù),用報表的填報功能,提交錄入到數(shù)據(jù)庫中,這樣一來可避免到服務(wù)器機房錄數(shù)據(jù)的繁瑣步驟,但是無論是批量導入和還是導出Excel,這對諸多報表軟件或稱集成報表功能的系統(tǒng)來說都是不容易的。

    解決Excel導入的性能問題,可以利用FineReport開發(fā)的op=excel_submit功能,來實現(xiàn)不預覽報表即可對填報表導入Excel。

    根據(jù)報表工程的使用方式不同,批量導入Excel中權(quán)限控制方式有所不同。

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

    1、使用FineReport自主開發(fā)的數(shù)據(jù)決策系統(tǒng)op=fs使用報表工程;

    2、將報表工程集成到自己的系統(tǒng)中。

    1.1 直接使用op=fs

    用戶使用數(shù)據(jù)決策系統(tǒng)op=fs查看報表,那么所有的權(quán)限都是通過op=fs進行認證,用戶也都是添加在op=fs中。

    1.2 集成FR報表工程

    用戶將FR報表工程集成到自己的系統(tǒng)中,通過自己的系統(tǒng)查看報表,那么FR所有的權(quán)限都是通過報表平臺管理op=fr_platform進行認證,詳細請查權(quán)限管理。

    除了批量導入,還有批量導出。一張報表可以根據(jù)不同的條件統(tǒng)計出不同的數(shù)據(jù)結(jié)果,有時希望將每一種條件下的結(jié)果都保存下來如導出成Excel文件至磁盤,可以在后臺調(diào)用FineReport的導出接口ExcelExporter將每種情況下的結(jié)果批量保存起來。

    實現(xiàn)的原理是遍歷讀取para.txt中的每組參數(shù)值,將該參數(shù)值組合傳入模板進行計算,然后將結(jié)果導出excel,循環(huán)直至最后一條參數(shù)組合。

    例如:

    由于我們需要對模板輸入?yún)?shù)對應的值才能夠計算得到最終的結(jié)果,因此我們需要所有可能的參數(shù)值組合,可以來源于數(shù)據(jù)庫中某個表,或者某個文件。這里我們假設(shè)所需的參數(shù)值組合保存在WebReport\WEB-INF\para.txt中。如下圖新建para.txt

    如果模板有兩個參數(shù)格式如下:


    批量導出程序,完整代碼如下:

    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 {      
                 
    // 定義報表運行環(huán)境,用于執(zhí)行報表      
                 String envpath = "D:\\FineReport_7.1\\WebReport\\WEB-INF";      
                 FRContext.setCurrentEnv(
    new LocalEnv(envpath));    
         ModuleContext.startModule(EngineModule.
    class.getName());    
        
    // 讀取環(huán)境下的模板文件    
        TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(),    
            
    "doc\\Primary\\DetailReport\\Details.cpt");    
        
    // 讀取用于保存的參數(shù)值的txt文件    
        File parafile = new File(envpath + "\\para.txt");    
        FileInputStream fileinputstream;    
        fileinputstream 
    = new FileInputStream(parafile);    
        BufferedReader bufferedReader 
    = new BufferedReader(new InputStreamReader(fileinputstream));    
        
    // 定義保存參數(shù)的map,用于執(zhí)行報表    
        java.util.Map paramap = new java.util.HashMap();    
        
    /*  
         * 遍歷參數(shù)值所在txt文件,txt文件中參數(shù)保存形式為 para1,para2 江蘇,陳羽 江蘇,安娜 首先取出第一行保存參數(shù)名稱  
         * 遍歷每個參數(shù)組合,如para1=江蘇、para2=陳羽,根據(jù)參數(shù)執(zhí)行模板,并將結(jié)果導出excel excel文件名為名稱+導出編號  
         
    */
        
        
    // 讀第一行,保存參數(shù)名稱    
        String lineText = bufferedReader.readLine();    
        lineText 
    = lineText.trim();    
        String[] paraname 
    = StableUtils.splitString(lineText, ",");    
        System.out.println(Arrays.toString(paraname));    
        
    // 遍歷每個參數(shù)組合,執(zhí)行模板,導出結(jié)果    
        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);    
            
    // 最后要清空一下參數(shù)map,用于下次計算    
            paramap.clear();    
            number
    ++;    
            outputstream.close();  
            }
     
        ModuleContext.stopModules();
        }
     catch (Exception e) {    
            e.printStackTrace();    
        }
        
              }
        
    }

    上述為示例程序,其中報表運行環(huán)境與模板名稱等需要根據(jù)您實際環(huán)境進行修改。編譯運行該程序您便可以得到結(jié)果,在E盤根目錄下將生成3個Excel文件,如下

    內(nèi)容分別為

    這樣批量導出便成功了。




    主站蜘蛛池模板: 亚洲区小说区图片区QVOD| 亚洲人成人77777网站不卡| 亚洲精品免费观看| 亚洲熟伦熟女专区hd高清| 久久精品国产亚洲沈樵| 国产美女精品久久久久久久免费| a级毛片毛片免费观看永久| 亚洲永久网址在线观看| 久久亚洲私人国产精品| 亚洲精品高清无码视频| 亚洲 小说区 图片区 都市| 国色精品卡一卡2卡3卡4卡免费| 国产免费拔擦拔擦8X高清在线人 | 日韩版码免费福利视频| 99ee6热久久免费精品6| 亚洲一卡2卡4卡5卡6卡残暴在线| 国产在线观看免费完整版中文版| 爱丫爱丫影院在线观看免费| 亚洲国产成人精品无码区花野真一| 亚洲成AV人片在线观看无码 | 久久久久久国产精品免费免费男同 | 亚洲狠狠综合久久| 免费人成网站在线播放| 在线观看的免费网站| 久9这里精品免费视频| WWW亚洲色大成网络.COM| 亚洲欧洲中文日产| 亚洲国色天香视频| 亚洲综合国产精品| 久久久久亚洲AV无码专区首JN| 中文字幕免费在线看线人| 国产免费AV片在线观看 | 亚洲一区免费视频| 亚色九九九全国免费视频| 免费H网站在线观看的| 日本一道在线日本一道高清不卡免费| 日韩亚洲国产二区| 亚洲一区二区三区高清| 亚洲av纯肉无码精品动漫| jizz在线免费播放| 免费人成视频在线|