前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hutool获取excel中的图片

hutool获取excel中的图片

作者头像
阿超
发布2022-09-29 08:58:35
1.9K0
发布2022-09-29 08:58:35
举报
文章被收录于专栏:快乐阿超

人无礼而何为,财非义而不取——耐施庵

依赖如下:

代码语言:javascript
复制
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>

代码如下:

代码语言:javascript
复制
package com.ruben;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFAnchor;
import org.apache.poi.xssf.usermodel.XSSFPicture;

import java.io.File;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

/**
 * ExcelDemo
 *
 * @author VampireAchao
 * @since 2022/9/7
 */
public class ExcelDemo {
    public static void main(String[] args) {
        String path = "D:\\file\\tmp\\001.xlsx";
        String localPath = "D:\\file\\tmp\\";
        final ExcelReader reader = ExcelUtil.getReader(path);
        Sheet sheet = reader.getSheet();
        List<XSSFPicture> pictures = StreamSupport.stream(sheet.getDrawingPatriarch().spliterator(), false)
                .filter(XSSFPicture.class::isInstance)
                .map(XSSFPicture.class::cast)
                .collect(Collectors.toList());
        pictures.parallelStream().forEach(picture -> {
            XSSFAnchor anchor = picture.getAnchor();
            String filename = StrUtil.format("{}-{}-{}-{}", anchor.getDx1(), anchor.getDy1(), anchor.getDx2(), anchor.getDy2());
            PictureData pdata = picture.getPictureData();
            String suggestFileExtension = pdata.suggestFileExtension();
            File file = FileUtil.writeBytes(pdata.getData(), localPath + filename + StrPool.DOT + suggestFileExtension);
            System.out.println(picture);
        });
        System.out.println(reader);
    }
}

执行后,其中excel包含的悬浮在单元格上方的图片已经成功提取

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档