所需jar包、详细实现代码 等资源下载地址为:
资源下载地址
https://download.csdn.net/download/weixin_38919176/14141311

1、所需 jar包


因为原来项目中已经有不同版本jxl.jar包,但没有sheet.setWaterMarkImage(imageByte, width, height);方法,所以引入新的jxl.jar包,未解决jar包冲突问题,将新jxl.jar包重命名为myjxl.jar,jar重命名实现方法详见:
jar包重命名实现方法
https://download.csdn.net/download/weixin_38919176/14040367

配置jar包:

Handler processing failed; nested exception is java.lang.NoClassDefFoundError       myjxl/write/CellFormat

2、创建水印图片

/*** 生成水印图片* * @param watermark* @return* @throws IOException*/public static File createWaterMark(String watermark) throws IOException {// 获取bufferedImage对象BufferedImage bi = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 处理背景色,设置为 白色int minx = bi.getMinX();int miny = bi.getMinY();for (int i = minx; i < width; i++) {for (int j = miny; j < height; j++) {bi.setRGB(i, j, 0xffffff);}}
//      Font font = new Font("华文细黑", Font.ITALIC, 20);// 获取Graphics2d对象Graphics2D g2d = bi.createGraphics();// 设置字体颜色为灰色g2d.setColor(Color.LIGHT_GRAY);// 设置图片的属性g2d.setStroke(new BasicStroke(1));// 设置字体g2d.setFont(new Font("华文细黑", Font.ITALIC, 20));// 设置字体倾斜度g2d.rotate(Math.toRadians(-10), (double) bi.getWidth() / 2, (double) bi.getHeight() / 2);// 写入水印文字 原定高度过小,所以累计写水印,增加高度for (int i = 1; i < 4; i++) {g2d.drawString(watermark, 100, 300 * i);}// 设置透明度g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));// 释放对象g2d.dispose();ByteArrayOutputStream os = new ByteArrayOutputStream();String targetImagePath = Thread.currentThread().getContextClassLoader().getResource("").getPath()+"WaterMark";ImageIO.write(bi, "png", new File(targetImagePath));watermarkFileName = new File(targetImagePath);// 通过bmp写入文件BMPEncoder.write(bi, watermarkFileName);return watermarkFileName;}

3、excel添加水印图片

//添加水印public static void addWaterMark(HttpServletRequest request, WritableSheet sheet) throws Exception{Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sysdate = sdf.format(date);if (userId != null && !"".equals(userId)&& userId.length() < 20) {try {File file = createWaterMark("水印内容");byte[] imageByte = new byte[(int) file.length()];fis = new FileInputStream(file);fis.read(imageByte);sheet.setWaterMarkImage(imageByte, width, height);} catch (Exception e) {e.printStackTrace();}}}

4、定义全局变量

 private static File watermarkFileName = null;private static FileInputStream fis = null;private static int width = 600; // 水印图片的宽度private static int height = 1020; // 水印图片的高度 因为设置其他的高度会有黑线,所以拉高高度

jxl 实现导出excel添加水印相关推荐

  1. jxl导入/导出excel(网上的案例)

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  2. EasyExcell导出excel添加水印

    EasyExcell导出excel添加水印 1.添加easyExcel相关依赖 2.准备基础工具类 3.创建水印handler类 4.创建单元测试类WriteTest.class 5.测试结果 1.添 ...

  3. jxl导入/导出Excel

    About jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp. jxl & ...

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

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

  5. jxl导入/导出Excel(Maven)

    About jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp. jxl & ...

  6. Android使用jxl快速导出Excel表格

    公司有个项目是需要把数据导出Excel表格的,最初是使用的poi来导出的,把poi的jar包放进去后出现各种各样的问题,实在麻烦,然后在网上继续找有没有简单的,就找到了jxl,个人感觉操作确实和网上说 ...

  7. java 导出excel添加水印

    pom.xml 引入依赖 <!--水印--> <dependency><groupId>org.apache.poi</groupId><arti ...

  8. hutool工具类导出excel添加水印

    // 创建 ExcelWriter 对象 ExcelWriter writer = ExcelUtil.getWriter("demo.xlsx");// 添加水印 ByteArr ...

  9. csv和excel php 解析_PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  10. SpringBoot+POI+JXL实现excel导出并添加水印功能

    SpringBoot+POI+JXL实现excel导出并添加水印功能 1.Pom引入 实现过程,部分代码如下 1.Pom引入 <dependency><groupId>org. ...

最新文章

  1. R语言基于多字段(多数据列、multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案
  2. imageserver
  3. webstorm 设置uglify 压缩js文件
  4. 专题 4 通用函数库之调试功能封装
  5. centenos安装mysql,Cento7 安装mycat和mycat-eye
  6. “既然计划没有变化快,那制订计划还有个卵用啊!”
  7. java 运行环境注册表_Java运行环境与Windows注册表
  8. 赢在中国 (2008-3-19)
  9. vue 获取响应头里set-cookie的值_最简化 VUE的响应式原理
  10. 3.1Guessing Game
  11. python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)
  12. 闭包 python_Python闭包思想与用法浅析
  13. 关于目前深度学习技术的相关思考----个人理解笔记
  14. iOS ipa包进行重新签名
  15. 如何区分abcd类地址_ip地址abc类怎么区分
  16. 华为linux输入法,华为默认手机输入法原来还能这么玩??涨知识了
  17. 从 Google 离职了!
  18. Mac 本地起一个html 服务
  19. 艺术照片特效软件JixiPix Premium Pack Mac2020-10-15
  20. 2018-ACM省赛

热门文章

  1. 【权限维持】window服务端常见后门技术
  2. Gis系统中常见的格式
  3. JavaScript --------WebS APIs学习之DOM(三)
  4. 百度黑洞效果实现原理
  5. Coverity代码静态检测工具介绍
  6. 学校教师使用计算机管理制度,教师办公室电脑使用及学校网络管理制度
  7. [网络工程师]-路由配置-OSPF配置
  8. java 调用热敏打印机_java调用芯烨热敏打印机 TSPL2指令 打印没有反应
  9. 矩阵的LU分解——MATLAB实现
  10. MongoDB for MAC 下载及安装