pom.xml 引入依赖
<!--水印-->
<dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.4</version>
</dependency>
//获取当前时间年月日
String calculateDate =DateUtil.formatDateTime(new Date());
try {//添加水印内容为当前日期//调用通用类,设置水印的格式BufferedImage bufferImg = WaterMark.createWaterMark("xlgsm"+calculateDate);// 导出到字节流B'ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(bufferImg, "png", os);File path = new File(ResourceUtils.getURL("classpath:").getPath());String url = URLDecoder.decode(path.getAbsolutePath(), "utf-8");
//模板路径FileInputStream fileInput = new   FileInputStream(url+"/static/dist/download/XXXXXXXX.xlsx");XSSFWorkbook wb = new XSSFWorkbook(fileInput);fileInput.close();int pictureIdx = wb.addPicture(os.toByteArray(), Workbook.PICTURE_TYPE_PNG);POIXMLDocumentPart poixmlDocumentPart = wb.getAllPictures().get(pictureIdx);//获取每个Sheet表for (int i = 0; i < wb.getNumberOfSheets(); i++) {XSSFSheet sheet = wb.getSheetAt(i);PackagePartName ppn = poixmlDocumentPart.getPackagePart().getPartName();String relType = XSSFRelation.IMAGES.getRelation();PackageRelationship pr = sheet.getPackagePart().addRelationship(ppn, TargetMode.INTERNAL, relType, null);sheet.getCTWorksheet().addNewPicture().setId(pr.getId());//sheet.protectSheet(pwd);}//创建输出流ServletOutputStream out = response.getOutputStream();response.setContentType("application/vnd.ms-excel");//导出模板的名称String fileName = java.net.URLEncoder.encode("导出模板", "UTF-8");String disposition = "attachment; fileName="+fileName+".xlsx";response.setHeader("Content-Disposition", disposition);wb.write(out);out.flush();out.close();wb.close();
} catch (IOException e) {LogUtil.log(e.getMessage(),Level.ERROR,e);
}
/*** 创建水印*/
public class WaterMark {//public static BufferedImage createWaterMark(String content) {Integer width = 450;Integer height = 400;// 获取bufferedImage对象BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);String fontType = "宋体";Integer fontStyle = Font.PLAIN;Integer fontSize = 25;Font font = new Font(fontType, fontStyle, fontSize);// 获取Graphics2d对象Graphics2D g2d = image.createGraphics();image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);g2d.dispose();g2d = image.createGraphics();//设置字体颜色和透明度g2d.setColor(Color.lightGray);// 设置字体g2d.setStroke(new BasicStroke(1));// 设置字体类型  加粗 大小g2d.setFont(font);g2d.shear(0.1,-0.4);//设置倾斜度FontRenderContext context = g2d.getFontRenderContext();Rectangle2D bounds = font.getStringBounds(content, context);double x = (width - bounds.getWidth()) / 2;double y = (height - bounds.getHeight()) / 2;double ascent = -bounds.getY();double baseY = y + ascent;// 写入水印文字原定高度过小,所以累计写水印,增加高度g2d.drawString(content, (int) x, (int) baseY);// 设置透明度g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));// 释放对象g2d.dispose();return image;}
}

java 导出excel添加水印相关推荐

  1. Java - 导出Excel添加水印、密码

    需求: 导出excel时,添加操作人的用户名.手机号水印.文件密码.基于若依框架的excel导出工具类改造,有三种添加水印方式,此处仅做一个记录. 目录 一. 添加依赖 二.工具类 1.水印处理类 2 ...

  2. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  3. java导出excel文件名_怎么解决java导出excel时文件名乱码

    怎么解决java导出excel时文件名乱码 发布时间:2020-06-19 16:59:00 来源:亿速云 阅读:137 作者:元一 java解决导出Excel时文件名乱码的方法示例:String a ...

  4. java 导出excel教程_Java导出Excel表格

    Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包,该包在网上可以找到. 第一步,创建Excel对象. HSSFWorkbook workbook = new HSSFW ...

  5. java 浏览器 excel导出excel_使用Java导出Excel表格并由浏览器直接下载——基于POI框架...

    非异步方法 /** * 使用Java导出Excel表格并由浏览器直接下载--基于POI框架 * * @param response * @return * @throws IllegalAccessE ...

  6. java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...

    excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...

  7. Java 导出excel进行换行

    java 导出Excel进行换行 String.valueOf((char)10) 在导出excel 的时候,如果原始文字中含有 \n 字符, 如果把 \n 替换为<br/>,excel不 ...

  8. java导出Excel(POI模式 Ajax下载 Post传参) bootstrap table getVisibleColumns获取显示的列

    工具类 (正式使用) package com.qyj.utils;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson. ...

  9. java 导出excel 附带图片

    java 导出excel 附带图片,思路将后台数据里保存的图片url转为file ,添加到excel里导出 代码示例 String imgPath = filePath +item.getFilePa ...

最新文章

  1. Android.mk文件语法规范及使用模板 (转载)
  2. POJ2226 不错的最小顶点覆盖
  3. CVE-2016-0095提权漏洞学习笔记
  4. LeetCode 122 买卖股票的最佳时机 II
  5. android mkv 字幕乱码,Android 西班牙语字幕乱码 字符编码
  6. Stanford CS230深度学习(七)RNN和LSTM
  7. TeamViewer中一些按钮的功能
  8. 程序员的寂寞,你们不懂
  9. Ubuntu删除U盘分区,并格式化U盘
  10. session_Composite(组合模式)
  11. 手机兼职赚钱,分享2个手机可操作的项目给你!
  12. 如何查看手机是32位还是64位
  13. Flutter Scaffold的详细解说
  14. Java8 JDK8
  15. Python便捷写法:[[0] * n for _ in range(n)]
  16. 官方完整HL7 ECG-XML例子及注释翻译(1)
  17. 【安卓笔记】自定义toggleButton
  18. python是什么意思中文、好学吗-python好学吗
  19. Android 10.0 进入recovery模式(等待用户选择recovery模式界面)实现自动恢复出厂设置
  20. python网络爬虫抹除webdriver指纹绕过淘宝滑块验证登录

热门文章

  1. 好内容如何获得高曝光?这几款软件帮助你
  2. 多语言预训练模型在机器翻译中的应用
  3. 如何设置电脑颜色保护眼睛
  4. 工科学生学计算机有什么好处,工科大学生就业最抢手 计算机专业市场现饱和...
  5. VCU整车控制器主控芯片MPC5744,原理图+源代码
  6. Java 集合(List、Set)与数组(Arr)互转方法及注意事项,难怪《阿里开发手册》会如此重视
  7. Q3流媒体付费用户超1亿,迪士尼迈过“鼠年关”有戏?
  8. drozer之玩转sieve
  9. layui导出excel
  10. 会计分录怎么分清谁是借方,谁是贷方