POI导出实现以及导出所有图片都是第一次插入图片解决办法
导出代码
@ResponseBody
@ApiOperation(value = "导出", httpMethod = "GET")
public Result export(HttpServletResponse response, @RequestParam("list") List<EquipmentContrastDTO> list) {
List<String> nameList; // 这里是我业务需要动态表头
if (CollectionUtils.isEmpty(list)) { //list 是导出数据
return Result.success("导出成功");
}
//导出的标题
List<String> title = new ArrayList<>();
title.add("名称");
title.add("图片");
if (CollectionUtils.isNotEmpty(list.get(0).getFdEquipmentParameterList())) {
nameList = list.get(0).getFdEquipmentParameterList().stream().map(name -> name.getParameterName()).collect(Collectors.toList());
title.addAll(nameList);
}
//excel名称
String fileName = "导出.xlsx";
//sheet名称
String sheetName = "sheet名称";
//调用导出方法
HSSFWorkbook wb = getHSSFWorkbook(sheetName, title, list, null);
try {
this.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
return Result.success("导出成功");
}
导出方法
public HSSFWorkbook getHSSFWorkbook(String sheetName, List<String> title, List<EquipmentContrastDTO> list, HSSFWorkbook wb) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
if (wb == null) {
wb = new HSSFWorkbook();
}
HSSFSheet sheet = wb.createSheet(sheetName);
HSSFRow row = sheet.createRow(0);
row.setHeight((short) 650);
HSSFCellStyle style = wb.createCellStyle