91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現jxls多模板多sheet導出excel文件

發布時間:2021-10-12 11:47:15 來源:億速云 閱讀:561 作者:iii 欄目:編程語言

本篇內容介紹了“如何實現jxls多模板多sheet導出excel文件”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.工具類

public static boolean exportMultSheetExcel(InputStream is, OutputStream os, Map<String, Object> model, Map<Integer, String> sheet) {
        Context context = PoiTransformer.createInitialContext();
        JxlsHelper jxlsHelper = JxlsHelper.getInstance();
        Transformer transformer = jxlsHelper.createTransformer(is, os);
        AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
        if (model != null) {
            for (String key : model.keySet()) {
                context.putVar(key, model.get(key));
            }
        }
        try {
            //獲得配置
            JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
            Map<String, Object> functionMap = new HashMap<String, Object>();
            functionMap.put("utils", new JxlsUtils());
            evaluator.getJexlEngine().setFunctions(functionMap);
            List<Area> xlsAreaList = areaBuilder.build();
            if (sheet != null) {
                for (Integer index : sheet.keySet()) {
                    Area xlsArea = xlsAreaList.get(index);
                    xlsArea.applyAt(new CellRef(sheet.get(index) + "!A1"), context);
                }
            }
            transformer.write();
            is.close();
        } catch (Exception e) {
            log.error("批量寫文件錯誤", e);
            return false;
        }
        return true;
    }

2.接口調用

// 獲取模板文件
                String tplfileName = "multi_sheet_tpl.xlsx";
                String tmpFileName = FileUtil.getTmpFileName(cName+"與"+gName);
                String tmpFilePath = FileUtils.getTempDirectoryPath() + File.separator + tmpFileName;
                // 寫目標文件
                log.info("開始寫目標文件tplfileName:{},tmpFileName:{}", tplfileName, tmpFileName);
                OutputStream os = new FileOutputStream(tmpFilePath);
                InputStream inputStream = FileUtil.getFileTplInputStream(tplfileName);
                if (os != null && tplfileName != null) {
                    Map<String, Object> model = new HashMap<String, Object>();
                    //sheet1
                    model.put("cGasOrders", list);

                    //sheet2
                    model.put("cName", cName);

                    Map<Integer, String> sheet = new HashMap<>();
                    sheet.put(0, "對賬函");
                    sheet.put(1, "對賬明細");

                    JxlsUtils.exportMultSheetExcel(inputStream, os, model, sheet);
                    os.close();
                }

3.area的構建

jXLS使用AreaBuilder接口構建Area,jXLS提供了兩個實現類:XmlAreaBuilder和XlsCommentAreaBuilder。

XmlAreaBuilder是基于XML配置文件構建Area,XlsCommentAreaBuilder是基于Excel模板中的單元格注釋構建Area。默認,jXLS使用XlsCommentAreaBuilder構建Area。可以通過JxlsHelper.setAreaBuilder()方法切換構建Area的方式。其實,這兩種構建方式都是基于解析各自的配置使用Java API構建Area。

4.總結

該實現最重要的點就是工具類的書寫,寫出工具類之后后面的直接調用即可,多模板主要是在單模板的基礎上多了area劃分,每一個sheet下不同模板不同的區域劃分,寫好后直接往里傳數據就實現了多模板多sheet導出。

“如何實現jxls多模板多sheet導出excel文件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡宁县| 葵青区| 白城市| 兴隆县| 青阳县| 澎湖县| 施秉县| 滁州市| 巴里| 阿图什市| 肃南| 古浪县| 涪陵区| 正蓝旗| 蓬安县| 岢岚县| 平顶山市| 应用必备| 阿拉善右旗| 蒙自县| 西贡区| 深州市| 晋城| 丹东市| 清水河县| 荣成市| 浦东新区| 昭平县| 富民县| 陇西县| 墨竹工卡县| 遵化市| 镇沅| 眉山市| 鄱阳县| 扶绥县| 砀山县| 墨江| 兴业县| 珲春市| 万盛区|