POI操作EXCEL插入图片


文章目录


POI操作EXCEL插入图片

依赖

xml 复制代码
<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);
        }
    }

}

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


参考文献

相关推荐
杨DaB16 分钟前
【SpringBoot】Swagger 接口工具
java·spring boot·后端·restful·swagger
YA33317 分钟前
java基础(九)sql基础及索引
java·开发语言·sql
桦说编程37 分钟前
方法一定要有返回值 \ o /
java·后端·函数式编程
小李是个程序1 小时前
登录与登录校验:Web安全核心解析
java·spring·web安全·jwt·cookie
David爱编程1 小时前
Java 创建线程的4种姿势,哪种才是企业级项目的最佳实践?
java·后端
hrrrrb2 小时前
【Java Web 快速入门】十一、Spring Boot 原理
java·前端·spring boot
Java微观世界2 小时前
Object核心类深度剖析
java·后端
MrSYJ2 小时前
为什么HttpSecurity会初始化创建两次
java·后端·程序员
hinotoyk2 小时前
TimeUnit源码分享
java
AAA修煤气灶刘哥3 小时前
Java+AI 驱动的体检报告智能解析:从 PDF 提取到数据落地全指南
java·人工智能·后端