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);