]> source.dussan.org Git - poi.git/commitdiff
fixed cloning of sheets with charts
authorEvgeniy Berlog <berlog@apache.org>
Tue, 24 Jul 2012 19:42:28 +0000 (19:42 +0000)
committerEvgeniy Berlog <berlog@apache.org>
Tue, 24 Jul 2012 19:42:28 +0000 (19:42 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/gsoc2012@1365255 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/model/InternalSheet.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java

index ce8e5a9bb3e18c8223d3243e35d9f38f13c3adc2..5e5d601996d1a67e0d345ca294b3c69e185411f2 100644 (file)
@@ -351,12 +351,7 @@ public final class InternalSheet {
                 continue;
             }
             if (rb instanceof EscherAggregate){
-                // EscherAggregate is used only as a container for SODRAWING and OBJ record combinations
-                // So, if the container is empty, there is no reason to clone this record
-                // See https://issues.apache.org/bugzilla/show_bug.cgi?id=49529
-//                if (0 == rb.getRecordSize()){
-                    continue;
-//                }
+                rb = new DrawingRecord();
             }
             Record rec = (Record) ((Record) rb).clone();
             clonedRecords.add(rec);
index afe4cf99d803969fed81908dde5075d34c3622cb..ebbd95cc28f7e40c5d1683a825a036292c730ddc 100644 (file)
@@ -117,10 +117,14 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
     HSSFSheet cloneSheet(HSSFWorkbook workbook) {
         this.getDrawingPatriarch();/**Aggregate drawing records**/
         HSSFSheet sheet = new HSSFSheet(workbook, _sheet.cloneSheet());
+        int pos = sheet._sheet.findFirstRecordLocBySid(DrawingRecord.sid);
+        DrawingRecord dr = (DrawingRecord) sheet._sheet.findFirstRecordBySid(DrawingRecord.sid);
+        if (null != dr){
+            sheet._sheet.getRecords().remove(dr);
+        }
         if (getDrawingPatriarch() != null){
-            int insertPos = sheet._sheet.findFirstRecordLocBySid(WindowTwoRecord.sid);
             HSSFPatriarch patr = HSSFPatriarch.createPatriarch(this.getDrawingPatriarch(), sheet);
-            sheet._sheet.getRecords().add(insertPos, patr._getBoundAggregate());
+            sheet._sheet.getRecords().add(pos, patr._getBoundAggregate());
             sheet._patriarch = patr;
         }
         return sheet;