java poi 水印_poi excel如何设置水印透明度
第一步:编写打印水印工具类
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如何设置水印透明度相关推荐
- java POI下载自定义EXCEL模板
通过POI形成固定excel模板,然后下载 springboot添加依赖 此处引入的是easypoi依赖,也可直接引入apache的POI <!--easyPOI--><depend ...
- java poi 读写操作excel
首先,需要导入poi jar包 package com.road; import java.io.FileNotFoundException; import java.io.FileOutputStr ...
- Java poi实现导出excel,添加数据有效性,生成模板
如果你是使用meaven的话,配置poi3.8就可以了,如下两个配置: <!-- poi导出excel --><dependency><groupId>org.ap ...
- Java poi插件导出Excel文件合并多sheet页
文章目录 一.java导出excel格式文件 二.excel文件多sheet页合并 前言:2020年第一篇文章,就写这两天工作中遇到的这个小需求吧,导出多excel,每个excel有多个sheet页, ...
- java excel poi 包_用java poi包读取Excel单元格
content = new hashmap(); string str = ""; try { fs = new poifsfilesystem(is); wb = new hss ...
- java poi方式读取Excel的图片
POM <!-- poi --> <dependency><groupId>cn.afterturn</groupId><artifac ...
- java poi导出下载excel报表或下载到指定路径
1. 数据库查出数据导出excel浏览器并下载 /*** 导出下载excel* @param list 导出数据* @throws Exception*/public static void expo ...
- 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\ ...
- excel加水印,由于excel没有加水印功能,实际上操作是将图片丢进去
目录 1.依赖 2.controller层代码 3.工具类 1.依赖 <!--excel poi--><dependency><groupId>org.apache ...
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
原文转载:http://blog.csdn.net/evangel_z/article/details/7332535 目录(?)[+] 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数 ...
最新文章
- 对于量子计算来说,99%的准确度足够吗?
- Keras【Deep Learning With Python】实现多元线性回归
- Android帧布局(Frame Layout)
- ArrayList刷题总结
- 直播平台虚拟币与人民币的关系
- 【BUAAOO】第四次博客作业
- 一顿操作猛如虎!云原生应用为何如此优秀?
- matlab_一组数据元素随机排列
- D3.js v4版本 按住shift键框选节点demo
- 文本相似度的方法对比
- Ubuntu安装MDK5
- 根据经纬度定位用户所在城市
- css中的counter计数器
- 读书笔记_005 《董明珠传》
- Unity3D之矩阵运用
- 【iOS】关于keyWindow的获取
- 移动端开发-响应式页面
- FleaPHP 开发指南 - 5. 应用程序设置
- 银联卡整个pdol电子钱包扣费的过程
- 什么是压力测试,在哪里做压力测试,软件压力测试存在哪些问题?
热门文章
- JAVA 练习题(4)
- 讯飞输入法pad版x86_讯飞输入法Pad版
- Linux基本操作---实践+理解--CentOS 7
- c++11多线程编程 整理(五) 原子量 atomic
- 《HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification》论文学习笔记
- PyTorch 单机多GPU 训练方法与原理整理
- 使用腾讯位置服务 JavaScript API GL 打造自己的 3D 地图
- 树莓派4B配置远程桌面软件 Teamviewer(解决报错)
- 飞思卡尔智能车参赛感受,以及开源自己搜集的资料
- 深度学习语音识别方法概述与分析