欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù)行,其他則是類似占位符,很好理解

 //代碼就純粹只是把模板的占位符和變量對應(yīng)起來
        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);

做這個功能有一個關(guān)鍵點:

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

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

相關(guān)文章

  • IDEA EasyCode 一鍵幫你生成所需代碼

    IDEA EasyCode 一鍵幫你生成所需代碼

    這篇文章主要介紹了IDEA EasyCode 一鍵幫你生成所需代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 利用Springboot+Caffeine實現(xiàn)本地緩存實例代碼

    利用Springboot+Caffeine實現(xiàn)本地緩存實例代碼

    Caffeine是一個基于Java8開發(fā)的提供了近乎最佳命中率的高性能的緩存庫,下面這篇文章主要給大家介紹了關(guān)于利用Springboot+Caffeine實現(xiàn)本地緩存的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Java 單向隊列及環(huán)形隊列的實現(xiàn)原理

    Java 單向隊列及環(huán)形隊列的實現(xiàn)原理

    本文主要介紹了Java 單向隊列及環(huán)形隊列的實現(xiàn)原理,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JVM完全解讀之YGC來龍去脈分析

    JVM完全解讀之YGC來龍去脈分析

    YGC是JVM?GC當前最為頻繁的一種GC,一個高并發(fā)的服務(wù)在運行期間,會進行大量的YGC,發(fā)生YGC時,會進行STW,一般時間都很短,除非碰到Y(jié)GC時,存在大量的存活對象需要進行拷貝
    2022-01-01
  • javaWeb實現(xiàn)學生信息管理系統(tǒng)

    javaWeb實現(xiàn)學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了javaWeb實現(xiàn)學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 代碼分析Java中線程的等待與喚醒

    代碼分析Java中線程的等待與喚醒

    本篇文章給大家分享了關(guān)于Java中線程的等待與喚醒的知識點內(nèi)容,有需要的朋友們可以學習下。
    2018-10-10
  • Simple JSON開發(fā)指南

    Simple JSON開發(fā)指南

    注意:JSONPauser不是線程安全的,需要的朋友可以參考下
    2016-04-04
  • Spring 異常單元測試的解決

    Spring 異常單元測試的解決

    這篇文章主要介紹了Spring 異常單元測試的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結(jié)

    java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結(jié)

    本文主要介紹了java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 解決Java中的強制類型轉(zhuǎn)換和二進制表示問題

    解決Java中的強制類型轉(zhuǎn)換和二進制表示問題

    這篇文章主要介紹了解決Java中的強制類型轉(zhuǎn)換和二進制表示問題,需要的朋友可以參考下
    2019-05-05

最新評論