java利用poi为excel添加图片水印
java利用poi为excel添加图片水印,还没研究文字水印的。。
所需jar包:poi-3.17.jar, poi-ooxml-3.17.jar, ooxml-schemas-1.3.jar,commons-collections4-4.1.jar,xmlbeans-2.6.0.jar,
Spire.Office.jar或Spire.Xls.jar(这两得在这下载 https://www.e-iceblue.cn/)
其他jar包可在这里下载:https://mvnrepository.com/
或者要送我分也行,嘿嘿:excel水印jar包.rar
代码
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;import javax.imageio.ImageIO;import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFRelation;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelWaterMarkUtil {/*** excel文件添加图片水印* @param srcPath 输入的文件路径* @param destPath 输出的文件路径* @param imagePath 水印图片的路径* @throws Exception*/public static void addWaterMark(String srcPath, String destPath, String imagePath) throws Exception {//若excel文件扩展名是xls(Excel2003及以前的版本),转换为xlsx(Excel2007及以后的版本)//HSSFWorkbook用于xls,XSSFWorkbook用于xlsxif (srcPath.endsWith("xls")) {//workbook = new HSSFWorkbook(new FileInputStream(srcPath));//存放转换后的文件的路径String tempPath = srcPath.substring(0, srcPath.lastIndexOf(File.separator)) + File.separator + "tempFile" + File.separator + srcPath.substring(srcPath.lastIndexOf(File.separator)+1);tempPath += "x";//xls改为xlsxdestPath += "x";//xls转换为xlsxExcelUtil.xlsToXlsx(srcPath, tempPath);srcPath = tempPath;}Workbook workbook = new XSSFWorkbook(new FileInputStream(srcPath));//加载水印图片BufferedImage image = ImageIO.read(new FileInputStream(imagePath));//导出到字节流ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(image, "png", os);int pictureIdx = workbook.addPicture(os.toByteArray(), Workbook.PICTURE_TYPE_PNG);POIXMLDocumentPart poixmlDocumentPart = (POIXMLDocumentPart) workbook.getAllPictures().get(pictureIdx);int sheetsNum = workbook.getNumberOfSheets();for (int i=0; i<sheetsNum; i++) {XSSFSheet sheet = (XSSFSheet) workbook.getSheetAt(i);if (sheet == null) {continue;}//poi-3.17String rID = sheet.addRelation(null, XSSFRelation.IMAGES, poixmlDocumentPart).getRelationship().getId();//poi-3.9/*String rID = sheet.getPackagePart().addRelationship(poixmlDocumentPart.getPackagePart().getPartName(), TargetMode.INTERNAL, XSSFRelation.IMAGES.getRelation(), null).getId();*/sheet.getCTWorksheet().addNewPicture().setId(rID);}workbook.write(new FileOutputStream(destPath));//poi-3.17if (workbook != null)workbook.close();if (os != null)os.close();}public static void main(String[] args) throws Exception {addWaterMark("E:\\测试.xls", "E:\\测试水印.xls", "E:\\waterMark.png");addWaterMark("E:\\测试.xlsx", "E:\\测试水印2.xlsx", "E:\\waterMark.png");}
}
xls转换为xlsx得工具类
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;public class ExcelUtil {/*** 将xls的表复制到新建的xlsx文档,实现xls转换为xlsx* @param srcPath* @param destPath* @throws Exception*/public static void xlsToXlsx (String srcPath, String destPath) throws Exception {//新建空文档,用于复制Workbook destWorkbook = new Workbook();//加载原文档Workbook srcWorkbook = new Workbook();srcWorkbook.loadFromFile(srcPath);//原文档表数int count = srcWorkbook.getWorksheets().size();for (int i=0; i<count; i++) {//获取原文档第 i 张表Worksheet srcSheet = srcWorkbook.getWorksheets().get(i);//获取空文档第 i 张表,若没有则自动添加,Worksheet destSheet = destWorkbook.getWorksheets().get(i);//表名与原文档的表名保持一致destSheet.setName(srcSheet.getName());/*if (i > 0) {//添加新的工作表destSheet = destWorkbook.getWorksheets().add(srcSheet.getName());}*///复制destSheet.copyFrom(srcSheet);}//保存文档destWorkbook.saveToFile(destPath, FileFormat.Version2010);}public static void main(String[] args) throws Exception {xlsToXlsx("E:\\测试.xls", "E:\\测试.xlsx");}
}
java利用poi为excel添加图片水印相关推荐
- java利用poi导出excel功能-附带图片导出
java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...
- java利用poi实现Excel考勤报表的输出
java利用poi实现Excel考勤报表的输出 实现效果 SXSSFWorkbook超大数据导出 标题.表头.内容有样式 可以多个sheet(满65535行数据换新的sheet) 一度为快 maven ...
- java实现给PDF文件添加图片水印,java实现给PDF文件添加文字水印
接上一篇,pdf跟tif 是一起做的 java实现 1.给PDF文件添加图片水印: public static void waterMark1(String inputFile,String outp ...
- Java 利用POI处理Excel的时间格式
问题: 用Java的POI处理Excel中的时间单元格,往往得到的格式不是我们想要的.比如: 按上图中方式设置好后,通过以下代码 XSSFRow row = sheet.getRow(0);Cell ...
- Java向word文档添加图片水印
前言: 水印可以说是一个标识,有时我们希望向文档中插入公司名称作为水印,或者将公司logo插入到文档中作为水印.先来看看本地word文档如何插水印吧! 然后选择图片水印选择图片添加即可. 那么想要通过 ...
- Java使用POi导出Excel(包含图片)
Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...
- Java 利用poi给word添加页眉页脚,页眉左边为公司logo图片,右为公司全称,页脚左为公司地址,右为页码总页数
参考链接: http://www.it1352.com/219785.html 1. 生成带公司logo的页眉 public void createHeader(XWPFDocument doc, S ...
- Java利用POI生成Excel强制换行
前一段时间在做一个学校排课系统时,有一个地方需要利用把课程表生成excel汇出给客户,由于之前用excel都只是简单的应用,在单元格里都是用自动换行,而这次可能需要用到手动强制换行. 于是我在网上找 ...
- java 利用POI 读取Excel数据的真实有效行数
前言 最近发现java导入excel数据时,我的excel数据明明只有4条数据,可是java程序却读取到了第6行.检查代码发现5.6行不小心设置了行高,导致poi的getLastRowNum()方法读 ...
- java利用poi生成excel如何自动换行
1.首先设置单元格内容自动换行 // 生成一个样式,用于设置内容样式 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFCellStyle cellSty ...
最新文章
- Python中单元测试出错了,会怎么样?
- C# 连接Oracle数据库以及一些简单的操作
- wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法
- 大模型炼丹无从下手?谷歌、OpenAI烧了几百万刀,总结出这些方法论…
- 刚刚,百度和小米宣布在一起,我还以为是谁收购了谁
- java中的控制执行流程
- sentaurus学习笔记(一)器件仿真
- java实现一个旅游网站
- 学习笔记(1):机器学习数学基础之凸优化视频教学-(1.2)机器学习中的优化问题及实例...
- 计算机的k代表什么意思,电脑CPU后缀K、U、HQ、M分别代表什么你清楚吗?
- mysql运算符xor_MySql运算符
- matlab表格数据输入方式,matlab输入excel表格数据-matlab怎么把数据写入excel
- 深度学习平台——Paddle核心框架介绍
- UI设计中的排版设计技巧
- 【QT 5 学习笔记-学习绘图相关+画线图形等+绘图事件+基础学习(1)】
- ios代码混淆-字符串加密的优点和其他破解方法
- 什么是「逼格」?怎么才能提高「逼格」?
- 232层3D闪存芯片来了:单片容量2TB,传输速度提高50%
- ubuntu14.04+cuda6.5+opencv2.4.9+cuda-convnet2配置
- 手把手教您搭建 AWS 大数据云平台
热门文章
- LED字体下载,可视化大屏,数据可视化必备
- python 通达信公式函数,python使用通达信公式,请人用python编写如下公式,我对编程一窍不通...
- 2021年最值得推荐的10款数据可视化工具,看完我收藏了
- android基于xposed框架,基于Xposed框架的模块:Android EagleEye
- 论文解读:MOEA/D with Adaptive Weight Adjustment
- 长焦拍照对比:小米10至尊纪念版和一加8 Pro、vivo X50 Pro+~~~~
- TopFormer 新的语义分割Transformer 结构
- malloc函数java_malloc函数详解及用法举例
- ppt大赛优秀作品计算机,ppt大赛获奖作品展示.ppt
- java计算机毕业设计家教到家平台源码+mysql数据库+系统+lw文档+部署