最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Easypoi 輕松實現(xiàn)復雜excel文件導出功能

 更新時間:2021年11月29日 10:21:14   作者:CodeSpike  
這篇文章主要介紹了Easypoi 輕松實現(xiàn)復雜excel文件導出功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

之前做的excel文件導出都相對簡單,用的都是公司自己封裝的一些poi方法,導出內(nèi)容都是表頭+一行行的數(shù)據(jù),但是這次需要導出的excel復雜度高了不少,自己用現(xiàn)有方法做比較麻煩,因此引入了Easypoi 進行實現(xiàn)。

之所以用Easypoi我是看中了它可以直接根據(jù)現(xiàn)有模板填充數(shù)據(jù)實現(xiàn)excel生成,而模板產(chǎn)品已經(jīng)給出,那么接下來只需要稍微做修改就能使用,修改后的模板如圖:

對照著官方文檔的示例(http://easypoi.mydoc.io/ ) 很容易就能理解模板的使用規(guī)則
注意其中的{{$fe: 是遍歷listmap變量循環(huán)填充數(shù)據(jù)行,其他則是類似占位符,很好理解

 //代碼就純粹只是把模板的占位符和變量對應起來
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", customer.getCode());
        map.put("name", customer.getName());
        map.put("mobile", customer.getMobile());
        map.put("membershipGrade", customer.getMembershipGrade());
        map.put("zzyMembershipGrade", customer.getZzyMembershipGrade());
        map.put("addressComplete", customer.getAddressComplete());
        List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();

        map.put("maplist", listMap);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (MainOrderSubOrderFinanceResult financeResult : mainOrderSubOrderFinanceResults) {
            Map<String, String> lm = new HashMap<String, String>();
            lm.put("orderCode", financeResult.getOrderCode());
            lm.put("payStatusDesc", financeResult.getPayStatusDesc());
            lm.put("settlementTypeDesc", financeResult.getSettlementTypeDesc());
            lm.put("billDate", dateFormat.format(financeResult.getBillDate()));
            lm.put("totalAmount", financeResult.getTotalAmount().stripTrailingZeros().toPlainString());
            lm.put("discountAmount", financeResult.getDiscountAmount().stripTrailingZeros().toPlainString());
            lm.put("amount", financeResult.getAmount().stripTrailingZeros().toPlainString());
            lm.put("payAmount", financeResult.getPayAmount().stripTrailingZeros().toPlainString());
            lm.put("amountPaid", financeResult.getAmountPaid().stripTrailingZeros().toPlainString());
            listMap.add(lm);

            sumTotalAmount = sumTotalAmount.add(financeResult.getTotalAmount());
            sumDiscountAmount = sumDiscountAmount.add(financeResult.getDiscountAmount());
            sumAmount = sumAmount.add(financeResult.getAmount());
            sumPayAmount = sumPayAmount.add(financeResult.getPayAmount());
            sumAmountPaid = sumAmountPaid.add(financeResult.getAmountPaid());
        }
        map.put("sumTotalAmount", sumTotalAmount);
        map.put("sumDiscountAmount", sumDiscountAmount);
        map.put("sumAmount", sumAmount);
        map.put("sumPayAmount", sumPayAmount);
        map.put("sumAmountPaid", sumAmountPaid);
        //生成臨時模板文件
        String url="";
        try {
            File temp = File.createTempFile("exportCreditBillResult", ".xlsx");
            FileUploadHelper.inputStream2File(this.getClass().getClassLoader().getResourceAsStream("exportCreditBillResult.xlsx"),temp);
            url=temp.getAbsolutePath();
            temp.deleteOnExit();
        } catch (IOException e) {

        }

        TemplateExportParams params = new TemplateExportParams(url);
        Workbook workbook = ExcelExportUtil.exportExcel(params, map);

做這個功能有一個關鍵點:

由于TemplateExportParams構造函數(shù)只支持傳入文件路徑,而直接傳入resource下的模板文件路徑在線上環(huán)境會有問題(本地沒問題),因此需要用getResourceAsStream讀取后生成臨時文件,再把臨時文件url傳入

到此這篇關于Easypoi 輕松實現(xiàn)復雜excel文件導出功能的文章就介紹到這了,更多相關Easypoi導出復雜excel文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解CopyOnWriteArrayList是如何保證線程安全

    詳解CopyOnWriteArrayList是如何保證線程安全

    這篇文章主要為大家介紹了CopyOnWriteArrayList是如何保證線程安全講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 解決springMVC 跳轉js css圖片等靜態(tài)資源無法加載的問題

    解決springMVC 跳轉js css圖片等靜態(tài)資源無法加載的問題

    下面小編就為大家?guī)硪黄鉀QspringMVC 跳轉js css圖片等靜態(tài)資源無法加載的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Spring?AOP概念及原理解析

    Spring?AOP概念及原理解析

    這篇文章主要介紹了Spring?AOP概念及原理?,通過使用?Spring?AOP?實現(xiàn)日志管理,我們可以將日志記錄的邏輯從業(yè)務邏輯中分離出來,簡化了代碼的維護,需要的朋友可以參考下
    2024-07-07
  • Java環(huán)境下高德地圖Api的使用方式

    Java環(huán)境下高德地圖Api的使用方式

    這篇文章主要介紹了Java環(huán)境下高德地圖Api的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • mybatis一對多方式實現(xiàn)批量插入

    mybatis一對多方式實現(xiàn)批量插入

    這篇文章主要介紹了mybatis一對多方式實現(xiàn)批量插入,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java禁止使用finalize方法

    Java禁止使用finalize方法

    這篇文章主要介紹了Java禁止使用finalize方法,需要的朋友可以參考下
    2017-10-10
  • springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式

    springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式

    這篇文章主要介紹了springboot配置開發(fā)和測試環(huán)境并添加啟動路徑方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中實現(xiàn) SHA-256加密的兩種方式

    Java中實現(xiàn) SHA-256加密的兩種方式

    這篇文章主要介紹了Java中實現(xiàn) SHA-256加密的兩種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Java的類型擦除式泛型詳解

    Java的類型擦除式泛型詳解

    Java語言中的泛型只存在于程序源碼之中,在編譯后的字節(jié)碼文件里,則全部泛型都會被替換為原來的原始類型(Raw Type),并且會在相應的地方插入強制轉型的代碼。這篇文章主要介紹了Java的類型擦除式泛型,需要的朋友可以參考下
    2021-08-08
  • 基于Springboot+Vue實現(xiàn)的在線答題闖關系統(tǒng)全過程

    基于Springboot+Vue實現(xiàn)的在線答題闖關系統(tǒng)全過程

    這篇文章主要介紹了基于Springboot+Vue實現(xiàn)的在線答題闖關系統(tǒng)的相關資料,文中包括前端Vue.js、后端SpringBoot及MySQL數(shù)據(jù)庫的使用,系統(tǒng)功能涵蓋順序出題、體型練習、隨機出題、錯題本、收藏題和答題統(tǒng)計等,需要的朋友可以參考下
    2024-12-12

最新評論

思南县| 江油市| 湘乡市| 临清市| 衡山县| 仙桃市| 化州市| 乐平市| 新丰县| 临武县| 潼南县| 万州区| 石阡县| 大关县| 凤山市| 巴彦县| 海林市| 石狮市| 偃师市| 宜春市| 蚌埠市| 嵊泗县| 启东市| 海晏县| 泽普县| 石楼县| 景谷| 和政县| 丹寨县| 洪江市| 开化县| 三河市| 永登县| 恩平市| 芮城县| 六盘水市| 秭归县| 齐齐哈尔市| 石狮市| 习水县| 吴桥县|