POI操作EXCEL插入图片

embedded/2024/9/24 22:32:09/

文章目录

    • POI操作EXCEL插入图片


POI操作EXCEL插入图片

依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>

使用HSSFPatriarch来将图片写入EXCEL中

java">BufferedImage bufferImg;//图片
ByteArrayOutputStream byteArrayOut = null;
try {// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArraybyteArrayOut = new ByteArrayOutputStream();//将图片读到BufferedImageInputStream resource = Thread.currentThread().getContextClassLoader().getResourceAsStream(imageName);if(resource == null){throw new BusinessException("%s资源不存在",imageName);}bufferImg = ImageIO.read(resource);// 将图片写入流中ImageIO.write(bufferImg, "png", byteArrayOut);// 利用HSSFPatriarch将图片写入EXCELHSSFPatriarch patriarch = sheet.createDrawingPatriarch();// 定义单元格位置HSSFCreationHelper creationHelper = workbook.getCreationHelper();HSSFClientAnchor clientAnchor = creationHelper.createClientAnchor();clientAnchor.setCol1(columnNo);clientAnchor.setRow1(rowNo);// 插入图片  PICTURE_TYPE_PNG是图片的类型HSSFPicture picture = patriarch.createPicture(clientAnchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));picture.resize(2.5);} catch (IOException e) {LOGGER.error("图片写入excel失败", e);
} finally {if (byteArrayOut != null) {try {byteArrayOut.close();} catch (IOException e) {LOGGER.error("关闭流失败", e);}}}

注:在将图片添加到工作簿中时,必须将其存储为字节数组


参考文献

  • POI操作EXCEL插入图片

http://www.ppmy.cn/embedded/116300.html

相关文章

【开源免费】基于SpringBoot+Vue.JS教师工作量管理系统(JAVA毕业设计)

本文项目编号 T 043 &#xff0c;文末自助获取源码 \color{red}{T043&#xff0c;文末自助获取源码} T043&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Java 中创建线程几种方式

目录 概述 一. 继承Thread类 1. 特点 2. 注意事项 3. 代码示例 二. 实现Runnable接口 1. 特点 2. 注意事项 3. 代码示例 三. 实现Callable接口 1. 特点 2. 注意事项 3. 代码示例 概述 在Java中&#xff0c;线程&#xff08;Thread&#xff09;是程序执行的最小单…

MySQL-排名函数ROW_NUMBER(),RANK(),DENSE_RANK()函数的异同

MySQL-排名函数ROW_NUMBER()&#xff0c;RANK()&#xff0c;DENSE_RANK()函数的异同 前言 假设有如下表结构与数据&#xff0c;class_id表示班级&#xff0c;需求&#xff1a;现在要按照班级分组&#xff0c;每个班级的学生进行年龄从小到大排序 一、ROW_NUMBER()函数 ROW_NUM…

Haproxy搭建Web集群

目录 一、Haproxy 1.什么是Haproxy 2.Haproxy的特性 3.Haproxy负载均衡的策略&#xff08;常见&#xff09; 4.Haproxy、LVS、Nginx的区别 二、部署Haproxy 1.Haproxy服务器部署 1.1关闭防火墙以及增强功能 1.2编译安装 1.3配置Haproxy 1.4添加Haproxy服务 2…

RT_Thread内核源码分析(二)——链表和对象管理

实时操作系统基本上都是通过一些链表进行线程、信号、队列的管理&#xff0c;RT_Thread也不例外&#xff0c;本章主要讲解RT_Thread的链表结构和对象管理。 本章基于RT_Thread Nano V3.1.5版本分析 1、链表 RT_Thread使用的链表非常简单&#xff0c;链表节点只有节点指针&#…

【论文速看】DL最新进展20240924-增量语义分割、多任务分割检测、遥感目标检测

目录 【增量语义分割】【多任务】【人脸防伪】【遥感目标检测】 【增量语义分割】 AWF: Adaptive Weight Fusion for Enhanced Class Incremental Semantic Segmentation 论文链接&#xff1a;https://arxiv.org/pdf/2409.08516 代码链接&#xff1a;[无&#xff0c;但文中说会…

MYSQL基础篇

文章目录 一、函数二、约束三、多表查询四、事务总结 一、函数 substring索引值从1开始 datadiff是前一个日期减去后面一个日期 二、约束 check&#xff08;&#xff09;括号里填条件 default后面加默认值eg&#xff1a;‘1’ 三、多表查询 给表起别名就不能直接通过表面来限定…

JVM 类加载机制

什么是类加载&#xff1f; 在JVA虚拟机实现规范中&#xff0c;通过ClassLoader类加载器把*.class字节码文件&#xff08;文件流&#xff09;加载到内存&#xff0c;并对字节码文件内容进行验证、准备、解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的java.lang.Class对…