引言
本文添加水印通过java生成图片,设置为excel背景图片实现。不仅仅局限于EasyExcel,凡是采用POI实现都可以采用该方案,但唯一的局限在于必须使用POI中的XSSFWorkbook对象,也就是对应Excel2007的版本,扩展名是.xlsx,具体实现可查看以下代码。
maven依赖
com.alibaba
easyexcel
2.2.5
org.projectlombok
lombok
1.18.12
provided
org.apache.poi
ooxml-schemas
1.4
代码实现
主要思路还是通过easyexcel获取XSSFSheet对象,可以实现SheetWriteHandler,重写afterSheetCreate方法来实现设置背景。easyexcel默认使用的SXSSFWorkbook(低内存操作excel的方式),设置inMemory(true)则会使用XSSFWorkbook构造excel操作对象。
如果不是使用easyexcel框架,使用XSSFWorkbook对象来创建excel操作对象即可。
1.eaysexcel Handler编写
/**
* excel添加水印,只支持XSSFWorkbook,其余类别:SXSSFWorkbook、SXSSFWorkbook请另寻他法
* easyExcel使用时需要设置inMemory(true),否者默认使用的是SXSSFWorkbook,会报错!
*/
@RequiredArgsConstructor
public class WaterMarkHandler implements SheetWriteHandler {
private final String WATER_MARK;
public static ByteArrayOutputStream createWaterMark(String content) throws IOException {
int width = 200;
int height = 150;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 获取bufferedImage对象
St