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);
        }
    }

}

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


参考文献

相关推荐
深蓝轨迹24 分钟前
@Autowired与@Resource:Spring依赖注入注解核心差异剖析
java·python·spring·注解
不想看见40425 分钟前
C++八股文【详细总结】
java·开发语言·c++
huaweichenai44 分钟前
java的数据类型介绍
java·开发语言
weisian1511 小时前
Java并发编程--17-阻塞队列BlockingQueue:生产者-消费者模式的最佳实践
java·阻塞队列·blockqueue
奔跑的呱呱牛1 小时前
GeoJSON 在大数据场景下为什么不够用?替代方案分析
java·大数据·servlet·gis·geojson
爱丽_1 小时前
Pinia 状态管理:模块化、持久化与“权限联动”落地
java·前端·spring
luom01022 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 骨科术后营养餐推荐系统为例,包含答辩的问题和答案
java
丶小鱼丶2 小时前
数据结构和算法之【栈】
java·数据结构
希望永不加班2 小时前
SpringBoot 核心配置文件:application.yml 与 application.properties
java·spring boot·后端·spring