package com.junfun.pms.controller.excelImport;
import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.xssf.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
public class ExcelImageReader {
public static void main(String[] args) throws IOException {
String excelFilePath = "D:/tu/tupianbiaoge.xlsx";
String imagePath = "D:/tu";
try {
FileInputStream fis = new FileInputStream(new File(excelFilePath));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFDrawing drawings = sheet.getDrawingPatriarch();
List<XSSFShape> shapes = drawings.getShapes();
int i=0;
for (XSSFShape shape : shapes) {
if (shape instanceof XSSFPicture) {
++i;
if (i ==4){
continue;
}
XSSFPicture picture = (XSSFPicture) shape;
PictureData pictureData = picture.getPictureData();
byte[] data = pictureData.getData();
// 获取图片的锚点
XSSFClientAnchor anchor = (XSSFClientAnchor) picture.getAnchor();
int rowIndex = anchor.getRow1() + 1; // 行索引从0开始,所以加1
int colIndex = anchor.getCol1() + 1; // 列索引从0开始,所以加1
// 生成带有中文行列信息的文件名
String imageFileName = "图片_第" + rowIndex + "行_第" + colIndex + "列_" + UUID.randomUUID().toString() + ".jpg";
// String imageFileName = UUID.randomUUID().toString() + ".jpg"; // Generate unique file name
FileOutputStream fos =
new FileOutputStream(new File(imagePath + File.separator + imageFileName));
fos.write(data);
fos.flush();
fos.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
11-09
3958
10-09
4006
01-09
556
02-07
7262