栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

POI实现读取excel中的图片并使用其中一列命名导出到文件夹

POI实现读取excel中的图片并使用其中一列命名导出到文件夹

POI依赖:


   		org.apache.poi
   		poi-ooxml
   		3.17
   	

代码:

public static void main(String[] args) throws IOException {
        String filename="C:\Users\Administrator\documents\WeChat    Files\wxid_ui8d6cy4xhcc22\FileStorage\File\2021-12\产品单价变动汇总表.xlsx";
        Map nameMap = readExcelData(filename, 0);
        File file = ResourceUtils.getFile(filename);
        InputStream inputStream = new FileInputStream(file);
        XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);
        Map picMap=getPictures(xssfWorkbook.getSheetAt(0));
        System.out.println("========条码行数:" + nameMap.size());
        System.out.println("========图片行数:" + picMap.size());
        writeImg(nameMap, picMap);

    }

    private static void writeImg(Map nameMap, Map picMap) {
        nameMap.forEach((row, name) -> {
            PictureData xssfPictureData= picMap.get(row);

            if (null == xssfPictureData) {
                System.out.println("第" + row + "行图片为空");
            } else {
                byte[] data =xssfPictureData.getData();
                FileOutputStream out = null;
                if (StringUtils.isBlank(name)) {
                    System.out.println("第" + row + "行条码为空");
                } else {
                    try {
                        out = new FileOutputStream(new File("C:\Users\Administrator\Desktop\imgs2\" + name + ".png"));
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                    try {
                        out.write(data);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

        });
    }

    public static Map getPictures(XSSFSheet xssfSheet) throws IOException {

        Map map = new HashMap();
        XSSFDrawing drawingPatriarch = xssfSheet.getDrawingPatriarch();
        List list = xssfSheet.getRelations();
        for (POIXMLdocumentPart part : list) {
            if (part instanceof XSSFDrawing) {
                XSSFDrawing drawing = (XSSFDrawing) part;
                List shapes = drawing.getShapes();
                for (XSSFShape shape : shapes) {
                    XSSFPicture picture = (XSSFPicture) shape;
                    XSSFClientAnchor anchor = picture.getPreferredSize();
                    CTMarker marker = anchor.getFrom();
                    Integer key = marker.getRow();
                    map.put(key, picture.getPictureData());
                }
            }
        }
        return map;
    }

    public static Map readExcelData(String filename, Integer sheet) throws IOException {
        //用于存储Exce读取数据
        HashMap hashMap=new HashMap();
        //读取excel数据
        File file = ResourceUtils.getFile(filename);
        InputStream inputStream = new FileInputStream(file);
        XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);

        //获取sheet表格,及读取单元格内容
        XSSFSheet xssfSheet=xssfWorkbook.getSheetAt(sheet);

        for (int i = 1; i <= xssfSheet.getLastRowNum(); i++) {
            XSSFRow sheetRow = xssfSheet.getRow(i);
            sheetRow.getCell(2).setCellType(CellType.STRING);
            String imgName = xssfSheet.getRow(i).getCell(2).getStringCellValue();
            hashMap.put(i, imgName);
        }
        return hashMap;
    }
    ```
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/654101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号