public static Map<String, XSSFPictureData> getPictures(XSSFSheet xssfSheet){
Map<String,XSSFPictureData> map=new HashMap<>();
List<XSSFShape> list=xssfSheet.getDrawingPatriarch().getShapes();
for (XSSFShape shape:list){
XSSFPicture picture = (XSSFPicture) shape;
XSSFClientAnchor xssfClientAnchor=(XSSFClientAnchor) picture.getAnchor();
XSSFPictureData pdata = picture.getPictureData();
// 行号-列号
String key = xssfClientAnchor.getRow1() + "-" + xssfClientAnchor.getCol1();
log.info("key数据:{}",key);
map.put(key, pdata);
}
return map;
}
测试
@Test
void reader() throws IOException {
ExcelReader reader = ExcelUtil.getReader(new FileInputStream("D:\\test.xlsx"));
Map<String, XSSFPictureData> map=getPictures((XSSFSheet)reader.getSheet());
String mapKey="1-1";//图片所在的行和列
XSSFPictureData xssfPictureData= map.get(mapKey);
byte[] data =xssfPictureData.getData();
FileOutputStream out = new FileOutputStream("D:\\daoru"+ System.currentTimeMillis() +".png");
out.write(data);
out.close();
}
所需依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>