diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 8f2a33f6b5..1c711d8ade 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -1722,11 +1722,24 @@ private void getAllEmbeddedObjects(HSSFSheet sheet, List objects if (null == patriarch){ return; } - for (HSSFShape shape: patriarch.getChildren()){ - if (shape instanceof HSSFObjectData){ + getAllEmbeddedObjects(patriarch, objects); + } + + /** + * Recursively iterates a shape container to get all embedded objects. + * + * @param parent the parent. + * @param objects the list of embedded objects to populate. + */ + private void getAllEmbeddedObjects(HSSFShapeContainer parent, List objects) + { + for (HSSFShape shape : parent.getChildren()) { + if (shape instanceof HSSFObjectData) { objects.add((HSSFObjectData) shape); + } else if (shape instanceof HSSFShapeContainer) { + getAllEmbeddedObjects((HSSFShapeContainer) shape, objects); } - } + } } public HSSFCreationHelper getCreationHelper() {