Java教程:Java使用POI将图片Base64编码写入到Excel表格当中
今天来说下在Java当中使用poi将将图片Base64编码写入到Excel表格当中,以前我们都是在表格中写内容,但不防会有时让写出图片等功能,比如说做一些评价功能,上传图片那是必然的,接下来我就说下整体步骤
首先,第一步,导入pom包
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.9</version>
</dependency>
第二步,省略一些其余代码,写上关键的,使用当前sheet创建一个画图顶级管理器,一个sheet只能获取一个
/*** @author wfeil211@foxmail.com* @version 2020-5-9 18:30:00*/
//画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
Drawing patriarch = sheet.createDrawingPatriarch();
第三步,将当前画入图片的位置表格调整,i为X轴位置,256为poi中固定像素值,不可修改
/*** @author wfeil211@foxmail.com* @version 2020-5-9 18:30:00*/
sheet.setColumnWidth(i, 30 * 256);
row.setHeight((short) (6 * 256));
第三步,开始画图
/*** @author wfeil211@foxmail.com* @version 2020-5-9 18:30:00*/
//anchor主要用于设置图片的属性
// dx1 第1个单元格中x轴的偏移量
// dy1 第1个单元格中y轴的偏移量
// dx2 第2个单元格中x轴的偏移量
// dy2 第2个单元格中y轴的偏移量
// col1 第1个单元格的列号
// row1 第1个单元格的行号
// col2 第2个单元格的列号
// row2 第2个单元格的行号
ClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255, i, rowNum+j+2, i+1, rowNum+j+3);
anchor.setAnchorType(3);
//插入图片
BASE64Decoder decoder = new BASE64Decoder();
byte[] decoderBytes = new byte[0];
try {decoderBytes = decoder.decodeBuffer(base64Str);
} catch (IOException e) {e.printStackTrace();
}
patriarch.createPicture(anchor, wb.addPicture(decoderBytes, HSSFWorkbook.PICTURE_TYPE_JPEG));
至此完美写入成功,由于此方法必须先将图片转为byteArray数组形式,所以先将图片base64编码转为byteArray(即图中base64Str)
***注意:new XSSFClientAnchor(0,0,0,0,0,0,0,0) 中有8位数值,分别代表
1. dx1 第1个单元格中x轴的偏移量
2. dy1 第1个单元格中y轴的偏移量
3. dx2 第2个单元格中x轴的偏移量
4. dy2 第2个单元格中y轴的偏移量
5. col1 第1个单元格的列号
6. row1 第1个单元格的行号
7. col2 第2个单元格的列号
8. row2 第2个单元格的行号
其中前四位,为偏移量,暂且不用理会,根据自己需求而定,当然256为倍数,后四位代表Excel表格中XY轴坐标位置,计算好数值即可完美定位图片位置
导出图例
Java教程:Java使用POI将图片Base64编码写入到Excel表格当中相关推荐
- java多图片上传json_[Java教程]SpringMVC框架五:图片上传与JSON交互
[Java教程]SpringMVC框架五:图片上传与JSON交互 0 2018-08-07 22:00:42 在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包 ...
- java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片
[Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...
- Java教程:使用POI读取excel文档(根据BV1bJ411G7Aw整理)
Java教程:使用POI读取excel文档(根据BV1bJ411G7Aw整理) 最近公司需要我做一个导出Excel表格的功能,为此来学习一下POI,在这里记录一下学习笔记.B站直接搜BV1bJ411G ...
- java抓取网页标题内容_[Java教程]java 网页页面抓取标题和正文
[Java教程]java 网页页面抓取标题和正文 0 2014-07-10 09:01:30 import java.io.BufferedReader;import java.io.IOExcept ...
- java字符流实际上也是字节,[Java教程]Java字节流与字符流的区别
[Java教程]Java字节流与字符流的区别 0 2017-05-22 12:00:42 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身 ...
- java播放器使用教程_[Java教程]Java音乐播放器
[Java教程]Java音乐播放器 0 2016-01-07 12:00:09 乐乐音乐目前是基于musique开发的一个java音乐播放器,之前开发了一个android版本的音乐播放器,现在把and ...
- java删减pdf内容合并_[Java教程]Java基础之PDF文件的合并
[Java教程]Java基础之PDF文件的合并 0 2017-07-28 00:00:45 1.首先下载一个jar包:pdfbox-app-1.7.1.jar 2.代码如下:package com;i ...
- java语言金山打字_[Java教程]java实现 swing模仿金山打字 案例源码
[Java教程]java实现 swing模仿金山打字 案例源码 0 2014-11-17 12:00:21 java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http ...
- java rsa 生成公钥私钥_[Java教程]java RSA 生成公钥私钥
[Java教程]java RSA 生成公钥私钥 0 2016-10-14 17:00:15 /** * 引进的包都是Java自带的jar包 * 秘钥相关包 * base64 编解码 * 这里只用到了编 ...
最新文章
- yii2 windows 安装
- Parse error. Expected a command name
- python随机生成中文字符串_用Python生成随机UTF-8字符串
- nyoj1228矩形判断
- tr的display属性出现td的colspan无效问题
- springboot+mybatis实现数据分页(三种方式)
- Windows7跑星际争霸问题解决——为了继续星际争霸的辉煌!
- 在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...
- php与eCharts结合,23.安装php和echarts进行结合展示图表
- 三角函数和复指数函数的转化_三角函数与复数
- 为什么2 *(i * i)比Java中的2 * i * i更快?
- JavaSE基础———StringBuffer StringBuilder Arrays和基本数据类型包装类
- 《数据库系统基础教程》概念
- Mac终端adb安卓刷机
- 互联网时代没有囊括进来的流量,在产业互联网时代全部都被囊括进来
- 【计算机系统】LC-3中断试验
- ✿2021NEWCTF6.1萌新赛✿MISC-all-WP
- yum install pcre pcre-devel 报错
- 使用计算机的好习惯教学设计,《我的好习惯》教学设计
- 大数据运维架构师培训(1):Zookeeper,Hadoop(HDFS,MR,Yarn)
热门文章
- 【R1CS to QAP】
- linux lvm删除分区,Linux LVM中的PV物理卷(硬盘或分区)删除方法
- vue tsx render函数 transition动画不生效
- 跨平台应用开发进阶(十一) :uni-app 实现IOS原生APP-云打包集成极光推送(JG-JPUSH)详细教程
- 你懂得“沉没成本”是什么吗?是可怕的赌徒思想,会毁了你的一生
- 【介绍+代码实现】使用GradualWarmupScheduler进行学习率预热
- 蚂蚁集团境外站点 Seata 实践与探索
- STM32单片机程序dll实现
- python-requests官网_Python-Requests1-批量登录获取uid
- MySQL 服务无法打开的解决方法