200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java导出excel水印_java实现导出带有水印的excel

java导出excel水印_java实现导出带有水印的excel

时间:2021-11-03 21:18:45

相关推荐

java导出excel水印_java实现导出带有水印的excel

java导出带有水印的excel

起因

实现思路

代码实现

思考

起因

最近接到了一个比较恶心的需求,要求在导出的excel中增加水印,并且要求必须是要excel,因为他们要对excel中的数据做操作(既然要操作那水印同样可以删掉,完全是没有用的需求,但是无奈技术做不了主,只能硬着头皮干了)

实现思路

完全没有思路,根本没有相关api,于是百度、谷歌、github查个遍,最有定了方案。

方案有两种:

先弄好有水印的空excel,然后再往这个excel中写入数据。但是业务要求每个人的水印不同,所以此方案不合适。

动态生成水印图片在画到生成的excel中。可以满足业务要求,最终决定用此方式。

代码实现

实现很简单,就是先通过createWaterMark方法生成水印图片,在将图片画到所有的sheet中,具体实现如下:

public class ExcelWaterRemarkUtil {

public static void painWaterMark(Workbook wb,String content) throws IOException {

String imgFileName = "waterMark_photo_"+content+".png";

createWaterMark(content,imgFileName);

int sheetSize = wb.getNumberOfSheets();

for(int i=0;i

思考

这个方法每次都会生成新的水印图片,其实每个人的水印图片是不会变的,所有可以将水印图片放到某个目录下,每次生成前看看以后没有对应人员的水印图片,有就拿来用,没有就重新生成(也可是其他维度不一定是人员维度,主要是找到不变的元素)。和我们的缓存的想法很像。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。