引入阿里easyExcel依赖
<!-- easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
<exclusions>
<exclusion>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
自定义的阿里easyexcel拦截器方法
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import com.jerry.util.ExcelUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
public class SheetWriteHandlerUtil implements SheetWriteHandler {
private String title;
private String[] header;
private String imageurl;
private String sheetName;
private final Log log = LogFactory.getLog(getClass());
public SheetWriteHandlerUtil(String title, String[] header, String imageurl, String sheetName) {
this.title = title;
this.header = header;
this.imageurl = imageurl;
this.sheetName = sheetName;
}
public SheetWriteHandlerUtil(String sheetName) {
this.sheetName = sheetName;
}
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Workbook workbook = writeWorkbookHolder.getWorkbook();
Sheet sheet = workbook.getSheetAt(0);
if (StringUtils.isNotEmpty(sheetName)){
writeWorkbookHolder.getCachedWorkbook().setSheetName(0, sheetName);
}
if (StringUtils.isNotEmpty(title)){
//设置标题
Row row1 = sheet.createRow(0);
row1.setHeight((short) 800);
Cell cell = row1.createCell(0);
//设置单元格内容
cell.setCellValue(title);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setAlignment(HorizontalAlignment.LEFT);
Font font = workbook.createFont();
font.setBold(true);
font.setFontHeight((short) 400);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
}
if (header != null){
// 第一行大标题占位设置
sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 0, 0, header.length-1));
}
if(StringUtils.isNotEmpty(imageurl)){
try {
imagewrite(writeWorkbookHolder,writeSheetHolder,imageurl);
} catch (IOException e) {
e.printStackTrace();
log.error("easyexcel拦截器图片流处理出错"+ e.getMessage());
}
}
}
public void imagewrite(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder,String imageurl) throws IOException {
Workbook workbook = writeWorkbookHolder.getWorkbook();
Sheet sheet = workbook.getSheetAt(0);
try (ByteArrayOutputStream picOut = new ByteArrayOutputStream()) {
//读图片并写入流
BufferedImage bufferedImage = ImageIO