采用POI 3.9版本读取07版本的Excel中嵌入单元格的图片,根据网上的方法发现sheet.getRelations().size==0,好像只能读取插入浮动图片,而对于嵌入单元格当中的图片无法获取
/**
* 获取XLSX工作簿指定sheet中图片列表
*
* @param workbook 工作簿{@link Workbook}
* @param sheetIndex sheet的索引
* @return 图片映射,键格式:行_列,值:{@link PictureData}
*/
private static Map<String, PictureData> getPicMapXlsx(XSSFWorkbook workbook, int sheetIndex) {
final Map<String, PictureData> sheetIndexPicMap = new HashMap<String, PictureData>();
final XSSFSheet sheet = workbook.getSheetAt(sheetIndex);
XSSFDrawing drawing;
for (POIXMLDocumentPart dr : **sheet.getRelations()**) {
if (dr instanceof XSSFDrawing) {
drawing = (XSSFDrawing) dr;
final List<XSSFShape> shapes = drawing.getShapes();
XSSFPicture pic;
CTMarker ctMarker;
for (XSSFShape shape : shapes) {
pic = (XSSFPicture) shape;
ctMarker = pic.getPreferredSize().getFrom();
sheetIndexPicMap.put(StrUtil.format("{}_{}", ctMarker.getRow(), ctMarker.getCol()), pic.getPictureData());
}
}
}
return sheetIndexPicMap;
}
Excel文件版本、poi版本也全部变换过,没有起到应有的答案
通过POI获取Excel图片并得到图片的坐标
考虑easypoi不,比apache poi效率高还方便