• Spring Boot EasyPOI 使用指定模板导出Excel


    相信大家都遇到过,用户提出要把界面上的数据导成一个Excel,还得是用户指定的Excel格式,用原生的POI,需要自己去实现,相信是比较麻烦的,所以我们可以使用开源的EasyPOI.

    先上个图,看看是不是大家想要的效果.

    如图,是一个Demo导出模板,可以看到里面用了一些easy poi的公式,有了这个模板之后,我们只需要把需要的数据源形成后,调用接口就可以实现导出指定格式的模板了!

     一、先引入maven

            我们需要在指定模块中的pom.xml引入依赖包,如下:

    1. <dependency>
    2. <groupId>cn.afterturngroupId>
    3. <artifactId>easypoi-spring-boot-starterartifactId>
    4. <version>4.4.0version>
    5. dependency>

    二、关键代码调用

    引入依赖包之后,我们可以先看一下关键的代码使用,如下:

    1. Map map = new HashMap();//关键数据源对象
    2. //引入模板,注意,此处路径是相对与项目的resource目录下的,不需要自行去找到绝对路径
    3. TemplateExportParams params = new TemplateExportParams("template/模板名称.xls"); //模板路径
    4. params.setSheetNum(new Integer[]{0,1});//设置多个Sheet(若有多个Sheet,需要加入此代码)
    5. Workbook workbook = ExcelExportUtil.exportExcel(params, map);//easyPOI的工具类
    6. OutputStream out = response.getOutputStream();
    7. workbook.write(out);
    8. out.flush();
    9. out.close();

    如上的关键代码,也就几句而已,可以看到,我们只需要找到我们的模板路径,然后把我们的业务数据封装好传给工具类,就完成了。

    三、示例

    有了上述的关键代码,我们根据开头的示例图,封装成指定格式,如下:

    1. Map map = new HashMap();//关键数据源对象
    2. //封装业务数据
    3. Map objInfo = new HashMap();
    4. objInfo.put("Aennr","1000009");
    5. objInfo.put("kgChr02","备注XXX");
    6. objInfo.put("Rlkey","状态XXX");
    7. List> list = new ArrayList<>();
    8. Map m1= new HashMap();
    9. m1.put("Ztype","变更");
    10. m1.put("Idnrk","123");
    11. m1.put("Zmaktx","描述");
    12. list.add(m1);
    13. map.put("info", objInfo);
    14. map.put("list", list);
    15. TemplateExportParams params = new TemplateExportParams("template/模板名称.xls"); //模板路径
    16. params.setSheetNum(new Integer[]{0,1});//设置多个Sheet(若有多个Sheet,需要加入此代码)
    17. Workbook workbook = ExcelExportUtil.exportExcel(params, map);//easyPOI的工具类
    18. OutputStream out = response.getOutputStream();
    19. workbook.write(out);
    20. out.flush();
    21. out.close();

    我们可以看到,只需要往map中丢入指定内容即可显示在模板中。

    EasyPOI支持很多内容,公式等,详情可查看easyPOI的官方文档.

    easy poi 官方文档

  • 相关阅读:
    【读书笔记】【Effective Modern C++】型别推导
    lowbit和树状数组的理解与部分应用
    外包公司干了2个月,技术倒退两年...
    Mybatis逆向工程实战:如何快速生成实体类、Mapper接口和配置文件
    C++产生随机数字最全教程
    钉钉开放平台创建企业内部H5微应用或者小程序
    初识Java 10-1 集合
    Python武器库开发-高级特性篇(八)
    解决VirtualBox需要安装内核的DKMS的问题 查看 linux 内核
    安卓sd卡格式化数据恢复方法,您了解吗
  • 原文地址:https://blog.csdn.net/qq_42552574/article/details/134417339