第一步:编写打印水印工具类

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.imageio.ImageIO;

import org.apache.poi.ss.usermodel.ClientAnchor;

import org.apache.poi.ss.usermodel.Drawing;

import org.apache.poi.ss.usermodel.Picture;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

public class ExcelWaterRemarkUtils {

/**

* 为Excel打上水印工具函数 请自行确保参数值,以保证水印图片之间不会覆盖。 在计算水印的位置的时候,并没有考虑到单元格合并的情况,请注意

*

* @param wb

*            Excel Workbook

* @param sheet

*            需要打水印的Excel

* @param waterRemarkPath

*            水印地址,classPath,目前只支持png格式的图片,

*            因为非png格式的图片打到Excel上后可能会有图片变红的问题,且不容易做出透明效果。

*            同时请注意传入的地址格式,应该为类似:"\\excelTemplate\\test.png"

* @param startXCol

*            水印起始列

* @param startYRow

*            水印起始行

* @param betweenXCol

*            水印横向之间间隔多少列

* @param betweenYRow

*            水印纵向之间间隔多少行

* @param XCount

*            横向共有水印多少个

* @param YCount

*            纵向共有水印多少个

* @param waterRemarkWidth

*            水印图片宽度为多少列

* @param waterRemarkHeight

*            水印图片高度为多少行

* @throws IOException

*/

public static void putWaterRemarkToExcel(Workbook wb, Sheet sheet,

String waterRemarkPath, int startXCol, int startYRow,

int betweenXCol, int betweenYRow, int XCount, int YCount,

int waterRemarkWidth, int waterRemarkHeight) throws IOException {

// 校验传入的水印图片格式

if (!waterRemarkPath.endsWith("png")

&& !waterRemarkPath.endsWith("PNG")) {

throw new RuntimeException("向Excel上面打印水印,目前支持png格式的图片。");

}

// 加载图片

ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

InputStream imageIn = new FileInputStream(waterRemarkPath);

// Thread.currentThread().getContextClassLoader().getResourceAsStream(waterRemarkPath);

if (null == imageIn || imageIn.available() < 1) {

throw new RuntimeException("水印图片为空!");

}

BufferedImage bufferImg = ImageIO.read(imageIn);

if (null == bufferImg) {

throw new RuntimeException("水印read未获取BufferedImage!");

}

ImageIO.write(bufferImg, "png", byteArrayOut);

// 开始打水印

Drawing drawing = sheet.createDrawingPatriarch();

// 按照共需打印多少行水印进行循环

for (int yCount = 0; yCount < YCount; yCount++) {

// 按照每行需要打印多少个水印进行循环

for (int xCount = 0; xCount < XCount; xCount++) {

// 创建水印图片位置

int xIndexInteger = startXCol + (xCount * waterRemarkWidth)

+ (xCount * betweenXCol);

int yIndexInteger = startYRow + (yCount * waterRemarkHeight)

+ (yCount * betweenYRow);

/*

* 参数定义: 第一个参数是(x轴的开始节点); 第二个参数是(是y轴的开始节点); 第三个参数是(是x轴的结束节点);

* 第四个参数是(是y轴的结束节点); 第五个参数是(是从Excel的第几列开始插入图片,从0开始计数);

* 第六个参数是(是从excel的第几行开始插入图片,从0开始计数); 第七个参数是(图片宽度,共多少列);

* 第8个参数是(图片高度,共多少行);

*/

ClientAnchor anchor = drawing.createAnchor(0, 0, 1023, 255,

xIndexInteger, yIndexInteger, waterRemarkWidth,

waterRemarkHeight);

Picture pic = drawing.createPicture(anchor, wb.addPicture(

byteArrayOut.toByteArray(), Workbook.PICTURE_TYPE_PNG));

pic.resize();

}

}

}

}

java poi 水印_poi excel如何设置水印透明度相关推荐

  1. java POI下载自定义EXCEL模板

    通过POI形成固定excel模板,然后下载 springboot添加依赖 此处引入的是easypoi依赖,也可直接引入apache的POI <!--easyPOI--><depend ...

  2. java poi 读写操作excel

    首先,需要导入poi jar包 package com.road; import java.io.FileNotFoundException; import java.io.FileOutputStr ...

  3. Java poi实现导出excel,添加数据有效性,生成模板

    如果你是使用meaven的话,配置poi3.8就可以了,如下两个配置: <!-- poi导出excel --><dependency><groupId>org.ap ...

  4. Java poi插件导出Excel文件合并多sheet页

    文章目录 一.java导出excel格式文件 二.excel文件多sheet页合并 前言:2020年第一篇文章,就写这两天工作中遇到的这个小需求吧,导出多excel,每个excel有多个sheet页, ...

  5. java excel poi 包_用java poi包读取Excel单元格

    content = new hashmap(); string str = ""; try { fs = new poifsfilesystem(is); wb = new hss ...

  6. java poi方式读取Excel的图片

    POM ​​​​ <!-- poi --> <dependency><groupId>cn.afterturn</groupId><artifac ...

  7. java poi导出下载excel报表或下载到指定路径

    1. 数据库查出数据导出excel浏览器并下载 /*** 导出下载excel* @param list 导出数据* @throws Exception*/public static void expo ...

  8. java poi XSSFWorkbook读写Excel xlsx文件所需jar包一览

    所需jar包(全部都在poi-5.0.0包及其子包下):  * 1.poi-5.0.0  * 2.poi-ooxml-5.0.0  * 3.poi-ooxml-lite-5.0.0  * 4.lib\ ...

  9. excel加水印,由于excel没有加水印功能,实际上操作是将图片丢进去

    目录 1.依赖 2.controller层代码 3.工具类 1.依赖 <!--excel poi--><dependency><groupId>org.apache ...

  10. Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    原文转载:http://blog.csdn.net/evangel_z/article/details/7332535 目录(?)[+] 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数 ...

最新文章

  1. 对于量子计算来说,99%的准确度足够吗?
  2. Keras【Deep Learning With Python】实现多元线性回归
  3. Android帧布局(Frame Layout)
  4. ArrayList刷题总结
  5. 直播平台虚拟币与人民币的关系
  6. 【BUAAOO】第四次博客作业
  7. 一顿操作猛如虎!云原生应用为何如此优秀?
  8. matlab_一组数据元素随机排列
  9. D3.js v4版本 按住shift键框选节点demo
  10. 文本相似度的方法对比
  11. Ubuntu安装MDK5
  12. 根据经纬度定位用户所在城市
  13. css中的counter计数器
  14. 读书笔记_005 《董明珠传》
  15. Unity3D之矩阵运用
  16. 【iOS】关于keyWindow的获取
  17. 移动端开发-响应式页面
  18. FleaPHP 开发指南 - 5. 应用程序设置
  19. 银联卡整个pdol电子钱包扣费的过程
  20. 什么是压力测试,在哪里做压力测试,软件压力测试存在哪些问题?

热门文章

  1. JAVA 练习题(4)
  2. 讯飞输入法pad版x86_讯飞输入法Pad版
  3. Linux基本操作---实践+理解--CentOS 7
  4. c++11多线程编程 整理(五) 原子量 atomic
  5. 《HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification》论文学习笔记
  6. PyTorch 单机多GPU 训练方法与原理整理
  7. 使用腾讯位置服务 JavaScript API GL 打造自己的 3D 地图
  8. 树莓派4B配置远程桌面软件 Teamviewer(解决报错)
  9. 飞思卡尔智能车参赛感受,以及开源自己搜集的资料
  10. 深度学习语音识别方法概述与分析