这个导出和我上面那个导入是对应的 都是我自己使用过的
不多说,直接上完整代码,可以复制粘贴用到你的代码上去的
controller层
@PostMapping("export-excel")
public void exportExcel(HttpServletResponse httpServletResponse, @RequestBody TunnelAccidentManagementParam tunnelAccidentManagementParam) throws IOException {
tunnelAccidentManagementService.exportExcel(httpServletResponse, tunnelAccidentManagementParam);
}
service层
void exportExcel(HttpServletResponse httpServletResponse, TunnelAccidentManagementParam tunnelAccidentManagementParam) throws IOException;
serviceImpl层
这里我前面是写了一个查询,要先把这个数据从数据库查出来,然后再导出
@Override
public void exportExcel(HttpServletResponse httpServletResponse, TunnelAccidentManagementParam tunnelAccidentManagementParam) throws IOException {
LambdaQueryWrapper<TunnelAccidentManagement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper
.like(
ObjectUtils.isNotEmpty(tunnelAccidentManagementParam.getLot()),
TunnelAccidentManagement::getLot,
tunnelAccidentManagementParam.getLot()
)
.in(
TunnelAccidentManagement::getTunnelId,
tunnelAccidentManagementParam.getTunnelId()
)
.like(
ObjectUtils.isNotEmpty(tunnelAccidentManagementParam.getTunnel()),
TunnelAccidentManagement::getTunnel,
tunnelAccidentManagementParam.getTunnel()
)
.like(
ObjectUtils.isNotEmpty(tunnelAccidentManagementParam.getAccidentType()),
TunnelAccidentManagement::getAccidentType,
tunnelAccidentManagementParam.getAccidentType()
)
.eq(TunnelAccidentManagement::getDel, false)
.between(
ObjectUtils.isNotEmpty(tunnelAccidentManagementParam.getEndDate()),
TunnelAccidentManagement::getDateOfAccident,
tunnelAccidentManagementParam.getStartDate(),
tunnelAccidentManagementParam.getEndDate()
);
List<TunnelAccidentManagement> tunnelAccidentManagementList = tunnelAccidentManagementMapper.selectList(lambdaQueryWrapper);
List<TunnelAccidentManagementDTO> tunnelAccidentManagementListDTOS = AppBeanUtil.convertList(tunnelAccidentManagementList, TunnelAccidentManagementDTO.class);
//1、设定响应类型
httpServletResponse.setContentType("application/vnd.ms-excel");
//2、设定附件的打开方法为:下载,并指定文件名称为category.xlsx
httpServletResponse.setHeader("content-disposition", "attachment;filename=TunnelAccidentManagement.xlsx");
//3、、创建工作簿
ExcelWriterBuilder writeWork = EasyExcelFactory.write(httpServletResponse.getOutputStream(), TunnelAccidentManagementDTO.class).registerConverter(new LocalDateTimeConverter());
//4、创建表格
ExcelWriterSheetBuilder sheet = writeWork.sheet();
//5、写入数据到表格中
sheet.doWrite(tunnelAccidentManagementListDTOS);
}