相信大家都遇到过,用户提出要把界面上的数据导成一个Excel,还得是用户指定的Excel格式,用原生的POI,需要自己去实现,相信是比较麻烦的,所以我们可以使用开源的EasyPOI.
先上个图,看看是不是大家想要的效果.
如图,是一个Demo导出模板,可以看到里面用了一些easy poi的公式,有了这个模板之后,我们只需要把需要的数据源形成后,调用接口就可以实现导出指定格式的模板了!
一、先引入maven
我们需要在指定模块中的pom.xml引入依赖包,如下:
- <dependency>
- <groupId>cn.afterturngroupId>
- <artifactId>easypoi-spring-boot-starterartifactId>
- <version>4.4.0version>
- dependency>
二、关键代码调用
引入依赖包之后,我们可以先看一下关键的代码使用,如下:
- Map
map = new HashMap();//关键数据源对象 - //引入模板,注意,此处路径是相对与项目的resource目录下的,不需要自行去找到绝对路径
- TemplateExportParams params = new TemplateExportParams("template/模板名称.xls"); //模板路径
- params.setSheetNum(new Integer[]{0,1});//设置多个Sheet(若有多个Sheet,需要加入此代码)
- Workbook workbook = ExcelExportUtil.exportExcel(params, map);//easyPOI的工具类
- OutputStream out = response.getOutputStream();
- workbook.write(out);
- out.flush();
- out.close();
如上的关键代码,也就几句而已,可以看到,我们只需要找到我们的模板路径,然后把我们的业务数据封装好传给工具类,就完成了。
三、示例
有了上述的关键代码,我们根据开头的示例图,封装成指定格式,如下:
- Map
map = new HashMap();//关键数据源对象 -
- //封装业务数据
- Map
objInfo = new HashMap(); - objInfo.put("Aennr","1000009");
- objInfo.put("kgChr02","备注XXX");
- objInfo.put("Rlkey","状态XXX");
-
- List
- Map
m1= new HashMap(); - m1.put("Ztype","变更");
- m1.put("Idnrk","123");
- m1.put("Zmaktx","描述");
- list.add(m1);
-
- map.put("info", objInfo);
- map.put("list", list);
-
- TemplateExportParams params = new TemplateExportParams("template/模板名称.xls"); //模板路径
- params.setSheetNum(new Integer[]{0,1});//设置多个Sheet(若有多个Sheet,需要加入此代码)
- Workbook workbook = ExcelExportUtil.exportExcel(params, map);//easyPOI的工具类
- OutputStream out = response.getOutputStream();
- workbook.write(out);
- out.flush();
- out.close();
我们可以看到,只需要往map中丢入指定内容即可显示在模板中。
EasyPOI支持很多内容,公式等,详情可查看easyPOI的官方文档.