jxl 实现导出excel添加水印
所需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添加水印相关推荐
- jxl导入/导出excel(网上的案例)
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...
- EasyExcell导出excel添加水印
EasyExcell导出excel添加水印 1.添加easyExcel相关依赖 2.准备基础工具类 3.创建水印handler类 4.创建单元测试类WriteTest.class 5.测试结果 1.添 ...
- jxl导入/导出Excel
About jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp. jxl & ...
- Java - 导出Excel添加水印、密码
需求: 导出excel时,添加操作人的用户名.手机号水印.文件密码.基于若依框架的excel导出工具类改造,有三种添加水印方式,此处仅做一个记录. 目录 一. 添加依赖 二.工具类 1.水印处理类 2 ...
- jxl导入/导出Excel(Maven)
About jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp. jxl & ...
- Android使用jxl快速导出Excel表格
公司有个项目是需要把数据导出Excel表格的,最初是使用的poi来导出的,把poi的jar包放进去后出现各种各样的问题,实在麻烦,然后在网上继续找有没有简单的,就找到了jxl,个人感觉操作确实和网上说 ...
- java 导出excel添加水印
pom.xml 引入依赖 <!--水印--> <dependency><groupId>org.apache.poi</groupId><arti ...
- hutool工具类导出excel添加水印
// 创建 ExcelWriter 对象 ExcelWriter writer = ExcelUtil.getWriter("demo.xlsx");// 添加水印 ByteArr ...
- csv和excel php 解析_PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数
CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...
- SpringBoot+POI+JXL实现excel导出并添加水印功能
SpringBoot+POI+JXL实现excel导出并添加水印功能 1.Pom引入 实现过程,部分代码如下 1.Pom引入 <dependency><groupId>org. ...
最新文章
- R语言基于多字段(多数据列、multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案
- imageserver
- webstorm 设置uglify 压缩js文件
- 专题 4 通用函数库之调试功能封装
- centenos安装mysql,Cento7 安装mycat和mycat-eye
- “既然计划没有变化快,那制订计划还有个卵用啊!”
- java 运行环境注册表_Java运行环境与Windows注册表
- 赢在中国 (2008-3-19)
- vue 获取响应头里set-cookie的值_最简化 VUE的响应式原理
- 3.1Guessing Game
- python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)
- 闭包 python_Python闭包思想与用法浅析
- 关于目前深度学习技术的相关思考----个人理解笔记
- iOS ipa包进行重新签名
- 如何区分abcd类地址_ip地址abc类怎么区分
- 华为linux输入法,华为默认手机输入法原来还能这么玩??涨知识了
- 从 Google 离职了!
- Mac 本地起一个html 服务
- 艺术照片特效软件JixiPix Premium Pack Mac2020-10-15
- 2018-ACM省赛