From 5ee3a2d1d0661fb0cf071e2f824d36ed29b8b899 Mon Sep 17 00:00:00 2001 From: "Trejkaz (pen name)" Date: Tue, 21 May 2013 12:35:58 +1000 Subject: [PATCH 1/2] Update HSSFWorkbook.java HSSFWorkbook.getAllEmbeddedObjects wasn't getting all embedded objects, only the top-level ones. --- .../org/apache/poi/hssf/usermodel/HSSFWorkbook.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 8f2a33f6b5..9e5ddcbdc0 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -1729,6 +1729,23 @@ private void getAllEmbeddedObjects(HSSFSheet sheet, List 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() { return new HSSFCreationHelper(this); } From 92902476e6b4c4e4da2f369b5e42d17b1f3fc6c8 Mon Sep 17 00:00:00 2001 From: "Trejkaz (pen name)" Date: Fri, 14 Jun 2013 12:06:47 +1000 Subject: [PATCH 2/2] Fixing missing call to the getAllEmbeddedObjects() --- src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 9e5ddcbdc0..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,7 @@ private void getAllEmbeddedObjects(HSSFSheet sheet, List objects if (null == patriarch){ return; } - for (HSSFShape shape: patriarch.getChildren()){ - if (shape instanceof HSSFObjectData){ - objects.add((HSSFObjectData) shape); - } - } + getAllEmbeddedObjects(patriarch, objects); } /**