场景:在有些系统里可以看见有导出功能,导出一些数据,这时候可以把数据查出来,封装在一个list集合里返回到controller,然后实现导出。
也就是说 service层以下的代码实现和正常查询一样,把你需要导出的数据查出来,然后返回。我们可以在controller层来写导出功能代码。
1.首先在pom文件里添加一个插件
一开始不知道要添加这个插件,结果写完代码报错,报一个IOP…Exception,具体什么异常忘记了,哈哈。现在来看这个插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<version>2.6</version>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
2.来准备一个xlsx表格模板,放在静态资源resoucers下
当然这只是一种方法或者格式,还有其他表格类型,那样代码可能稍微有些不同
就这样 就可以了哈。
3.然后就需要去controller写一个接口。二话不说直接上代码
/**
* @Description: 水质水量导出
*@Param:
* @return:
* @Author: 毕
* @Date: 2020/1/8 14:26
*/
@ApiOperation(value = "水质水量导出",httpMethod="POST")
@PostMapping("/queryWaterQuantityListExport")
public void queryWaterQuantityListExport(
@ApiParam(name = "", value = "条件筛选") @RequestBody MonitorItemRelationDto monitorItemRelationDto){
//这里是调用方法普通查询得到的一个对象集合(现在要把这个导出)
List<MonitorItemRelationDto> monitorItemRelationDtos = waterQuantitysService.queryWaterQuantityList(monitorItemRelationDto);
//这里是开始写导出的功能了,开始看这
ServletOutputStream outputStream=null;
try {
//输入流来获取刚才你建的那个表格
InputStream inputStream = this.getClass().getResourceAsStream("/excel/WaterQuantitysExcel.xlsx");
//这个XSSFWorkbook 注意,看一下自己的文件是不是.xlsx,是才对应XSSFWorkbook
XSSFWorkbook xls =