From f1ecf76191727bcefd32557be05600474fa45d68 Mon Sep 17 00:00:00 2001 From: Evgeniy Berlog Date: Tue, 24 Jul 2012 19:42:28 +0000 Subject: [PATCH] fixed cloning of sheets with charts 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 | 7 +------ src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java | 8 ++++++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/java/org/apache/poi/hssf/model/InternalSheet.java b/src/java/org/apache/poi/hssf/model/InternalSheet.java index ce8e5a9bb3..5e5d601996 100644 --- a/src/java/org/apache/poi/hssf/model/InternalSheet.java +++ b/src/java/org/apache/poi/hssf/model/InternalSheet.java @@ -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); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index afe4cf99d8..ebbd95cc28 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -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; -- 2.39.5