大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“如何实现jxls多模板多sheet导出excel文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
成都创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元增城做网站,已为上家服务,为增城各地企业和个人服务,联系电话:18980820575
1.工具类
public static boolean exportMultSheetExcel(InputStream is, OutputStream os, Mapmodel, Map 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 functionMap = new HashMap (); functionMap.put("utils", new JxlsUtils()); evaluator.getJexlEngine().setFunctions(functionMap); List 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) { Mapmodel = new HashMap (); //sheet1 model.put("cGasOrders", list); //sheet2 model.put("cName", cName); Map 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文件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!