diff --git a/src/java/org/apache/poi/ddf/EscherContainerRecord.java b/src/java/org/apache/poi/ddf/EscherContainerRecord.java index bb188d538..9c204226e 100644 --- a/src/java/org/apache/poi/ddf/EscherContainerRecord.java +++ b/src/java/org/apache/poi/ddf/EscherContainerRecord.java @@ -243,10 +243,11 @@ public class EscherContainerRecord extends EscherRecord public void getRecordsById(short recordId, List out){ for(Iterator it = childRecords.iterator(); it.hasNext();) { Object er = it.next(); - if(er instanceof EscherContainerRecord) { - EscherContainerRecord c = (EscherContainerRecord)er; + EscherRecord r = (EscherRecord)er; + if(r instanceof EscherContainerRecord) { + EscherContainerRecord c = (EscherContainerRecord)r; c.getRecordsById(recordId, out ); - } else if (er instanceof EscherSpRecord){ + } else if (r.getRecordId() == recordId){ out.add(er); } } diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index fad9e4d0b..7976588d3 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -2493,6 +2493,8 @@ public final class Workbook implements Model { for(Iterator spIt = spRecords.iterator(); spIt.hasNext();) { EscherSpRecord sp = (EscherSpRecord)spIt.next(); int shapeId = drawingManager.allocateShapeId((short)dgId, dg); + //allocateShapeId increments the number of shapes. roll back to the previous value + dg.setNumShapes(dg.getNumShapes()-1); sp.setShapeId(shapeId); } }