用过都说好,自行改造 package excel; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.*; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; public class ExcelImageExtractor { public static void main(String[] args) { String PATH = "C:\\Users\\14403\\Desktop\\"; String fileName = PATH + "副本2024年模具清单923.xls"; // .xls 文件 try (InputStream fileInputStream = new FileInputStream(fileName)) { Workbook workbook = new HSSFWorkbook(fileInputStream); Sheet sheet = workbook.getSheetAt(0); processWorkbookForImages(workbook, sheet); // 传递路径给函数 workbook.close(); } catch (Exception e) { e.printStackTrace(); } } private static void processWorkbookForImages(Workbook workbook, Sheet sheet) { HSSFPatriarch drawing = (HSSFPatriarch) sheet.createDrawingPatriarch(); for (HSSFShape shape : drawing.getChildren()) { if (shape instanceof HSSFPicture) { HSSFPicture pic = (HSSFPicture) shape; HSSFClientAnchor anchor = (HSSFClientAnchor) pic.getAnchor(); byte[] bytes = pic.getPictureData().getData(); Row row = sheet.getRow(anchor.getRow1()); if (row != null && row.getCell(1) != null) { // 假设模具编号在第二列(B) Cell modeCell = row.getCell(1); String modeName = ""; switch (modeCell.getCellType()) { case STRING: modeName = modeCell.getStringCellValue(); break; case NUMERIC: modeName = String.valueOf((int) modeCell.getNumericCellValue()); break; default: System.out.println("Unexpected cell type: " + modeCell.getCellType()); continue; } String imageFileName = modeName + "." + pic.getPictureData().suggestFileExtension(); try (FileOutputStream out = new FileOutputStream(imageFileName)) { out.write(bytes); System.out.println("Image saved as: " + imageFileName); } catch (Exception e) { e.printStackTrace(); } } } } } }
从excel批量下载图片到本地
最新推荐文章于 2025-03-18 10:00:00 发布