背景
根据提供的格式进行Excel的下载。具体格式如下:
模板准备
根据提供的格式和业务需求进行分析,我发现这个功能就是一个简单的将DTO中的数据进行填充的操作
-
注意 :因为是DTO填充,不是List填充,所以模板中引用的数值都是由 **{}**括起来的;
-
如果是list填充需要**{.字段名}**;
-
对于背景里提供的带多选框的数据,需要在dto中定义新的字段,进行数据的展示;
创建的模板如下图:
代码展示
- 将写好的模板直接复制到代码中
- pom文件中引入相应的坐标
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
- 方法的编写
public void download(QueryDTO queryDTO,HttpServletResponse response){
// 获取模板地址
String templateFileName = "template" + File.separator + "ndbgTemplate.xlsx";
//导出模板
ExcelWriter excelWriter = null;
try {
excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate
(new ClassPathResource(templateFileName).getInputStream()).build();
} catch (IOException e) {
logger.error("导出文件异常", e);
}
WriteSheet writeSheet = EasyExcel.writerSheet().build();
Map<String, Object> map = new HashMap<String, Object>();
this.templateFuzhi(map,ndbgDTO);//ndbgDTO就是你需要进行数据填充的dto
excelWriter.fill(map, writeSheet);
// 关闭流
excelWriter.finish();
}
//赋值方法中的内容
private Map templateFuzhi(Map<String, Object> map,NdbgDTO ndbgDTO){
map.put("nsnd",ndbgDTO.getNsnd());
map.put("tyxydm",ndbgDTO.getTyxydm());
map.put("dwmc",ndbgDTO.getDwmc());
map.put("fddbr",ndbgDTO.getFddbr());
map.put("gkfwdh",ndbgDTO.getGkfwdh());
}