java Execl 写入png图片 解决

1、先拿到Execl 的所有图片 放到list

java 复制代码
/**
     * 获取图片和位置 (xls)
     *
     * @param sheet
     * @return
     * @throws IOException
     */
    public Map<String, PictureData> getPictures(XSSFSheet sheet) throws IOException {
        Map<String, PictureData> map = new HashMap<String, PictureData>();
        XSSFDrawing drawing = sheet.getDrawingPatriarch();
        if (drawing != null) {
            List<XSSFShape> list = drawing.getShapes();//.getChildren();
            for (XSSFShape shape : list) {
                if (shape instanceof XSSFPicture) {
                    XSSFPicture picture = (XSSFPicture) shape;
                    XSSFClientAnchor cAnchor = (XSSFClientAnchor) picture.getAnchor();
                    PictureData pdata = picture.getPictureData();
                    String key = cAnchor.getRow1() + "-" + cAnchor.getCol1();
                    map.put(key, pdata);
                }
            }
        }
        return map;
    }

2、从list拿到某个图片,工具类写入图片

java 复制代码
            PictureData pictureData = maplist.get(rowNum + "-" + index);
                if (null != pictureData) {
                    String suggestFileExtension = pictureData.suggestFileExtension();// 图片格式
                    String localPath = ResourceFileUtil.dirPath(SecurityUtils.getUserId(), "wechat/tiku/question/option/") + rowNum + "." + suggestFileExtension;// 存储路径
                    File file = new File(localPath);
                    if (!file.getParentFile().exists()) {
                        file.getParentFile().mkdirs();
                    }
                    FileUtil.writeBytes(pictureData.getData(), localPath);
相关推荐
Rain的Java大神之路10 分钟前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
2602_959960921 小时前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
Zane1994121 小时前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
略略略咯咯1 小时前
AI玩具-study
java
码农颜2 小时前
6.3 主函数流程剖析
开发语言·php
TheBestRucy2 小时前
Python 九阳神功:从零筑基到线程飞升
服务器·开发语言·网络·人工智能·python
研☆香2 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
xier_ran2 小时前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库
wuminyu3 小时前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++
草莓橙子碗3 小时前
Claude 使用指南
开发语言·python