POI操作EXCEL插入图片

news/2024/9/20 6:04:19 标签: java

文章目录

    • 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中,以便产生ByteArray
    byteArrayOut = new ByteArrayOutputStream();
    //将图片读到BufferedImage
    InputStream resource = Thread.currentThread().getContextClassLoader().getResourceAsStream(imageName);
    if(resource == null){
        throw new BusinessException("%s资源不存在",imageName);
    }
    bufferImg = ImageIO.read(resource);
    // 将图片写入流中
    ImageIO.write(bufferImg, "png", byteArrayOut);

    // 利用HSSFPatriarch将图片写入EXCEL
    HSSFPatriarch 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.niftyadmin.cn/n/5666690.html

相关文章

opencv编译报错 libavcodec.a(hevc cabac.o)

1、opencv编译报错&#xff1a;libavcodec.a(hevc cabac.o): relocation R X86 64 PC32 against ff w ff can not be used when makin with -fPlC 需要将ffmpeg在配置的时候./configure --enable-nonfree --enable-pic --enable-shared --disable-x86asm&#xff0c;然后安装ff…

SalescustomerController

目录 1、 SalescustomerController 1.1、 Sales 1.2、 /// 销售客户单号 1.3、 /// 查询客户区域 using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespac…

前端开发之原型模式

介绍 原型模式本质就是借用一个已有的实例做原型&#xff0c;在这原型基础上快速复制出一个和原型一样的一个对象。 class CloneDemo {name clone democlone(): CloneDemo {return new CloneDemo()} } 原型原型链 函数&#xff08;class&#xff09;都有显示原型 prototyp…

【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上)

文章目录 前言一、ArkTS基本介绍1、 ArkTS组成2、组件参数和属性2.1、区分参数和属性的含义2.2、父子组件嵌套 二、装饰器语法1.State2.Prop3.Link4.Watch5.Provide和Consume6.Observed和ObjectLink代码示例&#xff1a;示例1&#xff1a;&#xff08;不使用Observed和ObjectLi…

GSM安全特性

GSM安全特性&#xff0c;具体内容如下&#xff1a; 1. 安全特性&#xff1a; GSM的安全方面在3GPP TS 42.009 [4]和3GPP TS 43.020 [11]的规范参考文献中有描述。本条款提供了SIM卡支持的安全特性信息&#xff0c;以实现以下功能&#xff1a; 对网络进行用户身份认证&#x…

虚拟机安装nginx需要注意的一些事项

1. sudo systemctl status firewalld ------检查虚拟机防火墙是否在运行 2.sudo systemctl stop firewalld ---------- 停止防火墙的运行 我的虚拟机中nginx的安装位置在 cd /usr/local/nginx-1.20.2/sbin/nginx 启动nginx服务命令&#xff1a;./n…

【Git原理与使用】多人协作与开发模型(2)

目录 一、多人协作 (一)多人协作一 1、情景&#xff1a; 2、 origin/master 3、git branch 4、远程链接 5、总结 (二)多人协作二 1、引言 2、情景 3、流程 4、解决方法 二、企业级开发模型 1、DevOps背景 2、DevOps是什么 3、DevCps与git的关系 4、系统开发环境 5、Git分支设计…

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后&#xff0c;请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作&#xff1a; systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…