头部引入也可以自行导入
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
导入数据代码加入如下代码获取 PictureData集合
// 判断用07还是03的方法获取图片
if (is.getOriginalFilename().endsWith(".xls")) {
maplist = getPictures03((HSSFSheet) sheet);
} else if (is.getOriginalFilename().endsWith(".xlsx")) {
maplist = getPictures07((XSSFSheet) sheet);
}
if (maplist != null) {
printImg(maplist, list);
}
处理PictureData集合 函数
//图片写出
public void printImg(Map<String, PictureData> sheetList, List<HiddendangerResVo> list) throws Exception {
Object key[] = sheetList.keySet().toArray();
String bizType = "yh-beforeImage";
String bizId = bizIdGenerator.nextId();
for (int i = 0; i < sheetList.size(); i++) {
// 获取图片流
PictureData pic = sheetList.get(key[i]);
String[] row = key[i].toString().split("-");
Integer rowInt = new Integer(row[0]) - 3;
//判断是否小于list 数量
if (rowInt >= 0 && rowInt < list.size()) {
bizId = list.get(rowInt).getHiddenDangerId();
if (StringUtils.hasText(list.get(rowInt).getBeforeImage())) {
Integer beforeImage = new Integer(list.get(rowInt).getBeforeImage()) + 1;
list.get(rowInt).setBeforeImage(beforeImage.toString());
}
}
UploadInfo uploadInfo = new UploadInfo();
uploadInfo.setContent(pic.getData());
uploadInfo.setFileName(key[i] + "." + pic.suggestFileExtension());
uploadInfo.setFileModule(bizType);
attachmentService.addSingleAttachment(bizId, bizType, uploadInfo);
;
}
}
获取PictureData集合函数
/**
* 获取图片和位置 (xls)
*
* @param sheet
* @return
* @throws IOException
*/
public Map<String, PictureData> getPictures03(HSSFSheet sheet) throws IOException {
Map<String, PictureData> map = new HashMap<String, PictureData>();
List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
for (HSSFShape shape : list) {
if (shape instanceof HSSFPicture) {
HSSFPicture picture = (HSSFPicture) shape;
HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();
PictureData pdata = picture.getPictureData();
String key = cAnchor.getRow1() + "-" + cAnchor.getCol1() + "&" + bizIdGenerator.nextId(); // 行号-列号
map.put(key, pdata);
}
}
return map;
}
/**
* 获取图片和位置 (xlsx)
*
* @param sheet
* @return
* @throws IOException
*/
public Map<String, PictureData> getPictures07(XSSFSheet sheet) throws IOException {
Map<String, PictureData> map = new HashMap<String, PictureData>();
List<POIXMLDocumentPart> list = sheet.getRelations();
for (POIXMLDocumentPart part : list) {
if (part instanceof XSSFDrawing) {
XSSFDrawing drawing = (XSSFDrawing) part;
List<XSSFShape> shapes = drawing.getShapes();
for (XSSFShape shape : shapes) {
XSSFPicture picture = (XSSFPicture) shape;
XSSFClientAnchor anchor = picture.getPreferredSize();
CTMarker marker = anchor.getFrom();
String key = marker.getRow() + "-" + marker.getCol() + "&" + bizIdGenerator.nextId();
map.put(key, picture.getPictureData());
}
}
}
return map;
}