easyexcel源码分析(开源资讯MyExcel3.6.0)

MyExcel,是一个集导入、导出、加密Excel等多项功能的Java工具包。

MyExcel采用声明式语法来构建、读取Excel,屏蔽POI的具体操作细节(对POI无感知),以开发常用的技术替代,使得构建(从简单到高度复杂Excel)以及读取Excel变得极为便利,且构建、读取性能极为优异,占用内存极低(具体,请移步参考MyExcel&阿里EasyExcel性能对比)。

如导入:

List<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class) .sheet(0) // 0代表第一个,如果为0,可省略该操作,也可sheet("名称")读取 .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行 .BeanFilter(ArtCrowd::isDance) // bean过滤 .read(path.toFile());

本次更新如下:

  1. 重构模板构建器Excelbuilder,使用TemplateHandler处理模板解析;
  2. DefaultStreamExcelBuilder支持模板追加
  3. 新增MyExcelConfiguration,支持对MyExcel进行全局设置,如自定义临时文件目录;
  4. 优化ExcelBuilder资源处理,提升模板构建效率;
  5. 重命名@ExcelModel等注解对应配置类名称,易于理解;
  6. 优化单元测试文件存放目录,避免clone后无法直接执行单元测试问题;

在某些情况下,可能需要个性化的表头,或者汇总等等,这些需求可能会涉及合并行、列、样式等复杂布局,而且导出的数据可能又比较大,DefaultStreamExcelBuilder本身对Bean的能力不足以支撑复杂布局,为兼容海量数据导出与复杂布局,版本3.6.0以及以后,DefaultStreamExcelBuilder支持模板的追加,在模板中定义复杂布局,追加模板方式如下

代码示例:

try (DefaultStreamExcelBuilder<ArtCrowd> streamExcelBuilder = DefaultStreamExcelBuilder .of(ArtCrowd.class) .templateHandler(FreemarkerTemplateHandler.class)// 追加模板数据,可选,适合极度个性化数据导出 .start()) { // 模板数据追加 Map<String,Object> dataMap = this.getDataMap(); streamExcelBuilder.append("/templates/test.ftl", dataMap); // 普通数据追加 List<ArtCrowd> dataList = this.getDataList(); streamExcelBuilder.append(dataList); // 最终构建 workbook workbook = defaultExcelBuilder.build(); AttachmentexportUtil.export(workbook, "艺术生信息", response); }

首先,需要指定模板处理器:templateHandler(FreemarkerTemplateHandler.class),除FreemarkerTemplateHandler,还有BeetlTemplateHandler、EnjoyTemplateHandler、ThymeleafTemplateHandler等其他5种常用模板处理器;

easyexcel源码分析(开源资讯MyExcel3.6.0)(1)

其次,使用append方法追加模板数据,该方法接受相对路径以及绝对路径模板,绝对路径方式如下:

append("C:/User/project/templates","test.ftl",dataMap);

最终效果如下:

easyexcel源码分析(开源资讯MyExcel3.6.0)(2)

具体,请移步文档,参见流式导出部分:文档

easyexcel源码分析(开源资讯MyExcel3.6.0)(3)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页