java 使用EasyExcel导出图片到Excel
具体使用演示
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
private void genImageExcel(HttpServletResponse response,List<Export> dataList, String fileName) throws IOException {
if (CollectionUtils.isEmpty(demoDataList)) {
return;
}
AtomicReference<Integer> maxImageSize = new AtomicReference<>(0);
demoDataList.forEach(item -> {
if (CollectionUtils.isNotEmpty(item.getImagePathList()) && item.getImagePathList().size() > maxImageSize.get()) {
maxImageSize.set(item.getImagePathList().size());
}
});
AutoColumnWidthStyleStrategy longWidth = new AutoColumnWidthStyleStrategy();
demoDataList.forEach(item -> {
WriteCellData<Void> writeCellData = new WriteCellData<>();
if (CollectionUtils.isNotEmpty(item.getImagePathList())) {
Integer splitWidth = 2;
Integer imageWidth = 80;
Integer sumWidth = maxImageSize.get() * (imageWidth + splitWidth);
List<ImageData> imageDataList = new ArrayList<>();
List<String> imagePathList = item.getImagePathList();
for (int i = 1; i <= imagePathList.size(); i++) {
String path = imagePathList.get(i - 1);
Integer left = imageWidth * (i - 1) + i * splitWidth;
Integer right = sumWidth - imageWidth - left;
ImageData imageData = new ImageData();
try {
imageData.setImage(FileUtils.readFileToByteArray(new File(path)));
} catch (IOException e) {
e.printStackTrace();
}
imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG);
imageData.setTop(1);
imageData.setBottom(1);
imageData.setLeft(left);
imageData.setRight(right);
imageData.setAnchorType(ClientAnchorData.AnchorType.DONT_MOVE_DO_RESIZE);
imageDataList.add(imageData);
}
writeCellData.setImageDataList(imageDataList);
Map<String, Integer> zdyColumnWidth = new HashMap<>();
zdyColumnWidth.put("投诉图片", sumWidth / 6);
longWidth.setZdyColumnWidth(zdyColumnWidth);
}
item.setWriteCellDataFile(writeCellData);
});
EasyExcel.write(response.getOutputStream(), Export.class).registerWriteHandler(longWidth).registerWriteHandler(new SimpleRowHeightStyleStrategy((short)20,(short)35)).sheet("sheet表").doWrite(dataList);
}
public void ExportExcel(HttpServletResponse response) throws IOException {
String fileName = new String("导出-"+ System.currentTimeMillis() +".xlsx");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
String formatFileName = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + formatFileName );
List<Export> exportList = service.getExportList();
genImageExcel(response,exportList,fileName);
}
- 导出结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/715c56c017e441d8bf781f895ea998b7.png)