参考链接:
怎么调整导出图片的大小或者样式?https://www.yuque.com/easyexcel/faq/wpedtd
EasyExcel自定义拦截器 https://www.yuque.com/easyexcel/doc/write#591ee418
主要就是实现了AbstractCellWriteHandler,利用EasyExcel填充的不同时期调用对应方法进行拦截处理:
- 在数据转换完成后(
afterCellDataConverted
),将单元格类型设置成EMPTY,不让EasyExcel使用其默认方式处理图片;(AbstractExcelWriteExecutor#setImageValue
) - 在单元格上的所有操作完成后(
afterCellDispose
),使用我们自定义的方式对图片处理。
相关调用在WriteHandlerUtils
类中,有兴趣的可以去look look。
自定义拦截器Handler
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.AbstractCellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
import org.apache.poi.ss.usermodel.<