poi读取excel中的图片方式2003和2007版本

//2003版本,只能一个工作为单位读取
public static Map<String, HSSFPictureData> getPictures(HSSFSheet sheet) throws IOException {
		Map<String, HSSFPictureData> map = new HashMap<String, HSSFPictureData>();
		List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
		for (HSSFShape shape : list) {
			if (shape instanceof HSSFPicture) {
				HSSFPicture picture = (HSSFPicture) shape;
				HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();
				HSSFPictureData pdata = picture.getPictureData();
				String key = cAnchor.getRow1() + "-" + cAnchor.getCol1(); // 行号-列号
				map.put(key, pdata);
			}
		}
		return map;
	}


/**
2007版本
	 * 获取图片和位置 (xlsx)
	 * 
	 * @param sheet
	 * @return
	 * @throws Exception 
	 */
	public static Map<String, XSSFPictureData> getPictures(XSSFSheet sheet, String saveDir) throws Exception {
		Map<String, XSSFPictureData> map = new HashMap<String, XSSFPictureData>();
		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();
					XSSFPictureData pictureData = picture.getPictureData();
					map.put(key, picture.getPictureData());
				}
			}
		}
		return map;
	}

if (shape instanceof HSSFPicture) {HSSFPicture picture = (HSSFPicture) shape;HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();HSSFPictureData pdata = picture.getPictureData();String key = cAnchor.getRow1() + "-" + cAnchor.getCol1(); // 行号-列号map.put(key, pdata);}}return map;}

猜你喜欢

转载自blog.csdn.net/qq_23490959/article/details/80169007