From 5ab7cb4360806116ddb4959dceb4630ed35be9fc Mon Sep 17 00:00:00 2001 From: "Andrew C. Oliver" Date: Thu, 28 Nov 2002 19:20:36 +0000 Subject: [PATCH] http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13500 PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352929 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/model/Workbook.java | 21 ++++++++++++++----- .../apache/poi/hssf/record/RecordFactory.java | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index 4d71c35d7..a07862b5b 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -88,6 +88,7 @@ import org.apache.poi.hssf.util.HSSFColor; * @author Andrew C. Oliver (acoliver at apache dot org) * @author Glen Stampoultzis (glens at apache.org) * @author Sergei Kozello (sergeikozello at mail.ru) + * @author Luc Girardin (luc dot girardin at macrofocus dot com) * @see org.apache.poi.hssf.usermodel.HSSFWorkbook * @version 1.0-pre */ @@ -670,8 +671,11 @@ public class Workbook implements Model { // byte[] rec = (( byte [] ) bytes.get(k)); // System.arraycopy(rec, 0, retval, pos, rec.length); - pos += (( Record ) records.get(k)).serialize(pos, - retval); // rec.length; + Record record = (( Record ) records.get(k)); + // Let's skip RECALCID records, as they are only use for optimization + if(record.getSid() != RecalcIdRecord.sid || ((RecalcIdRecord)record).isNeeded()) { + pos += record.serialize(pos, retval); // rec.length; + } } log.log(DEBUG, "Exiting serialize workbook"); return retval; @@ -704,8 +708,11 @@ public class Workbook implements Model { // byte[] rec = (( byte [] ) bytes.get(k)); // System.arraycopy(rec, 0, data, offset + pos, rec.length); - pos += (( Record ) records.get(k)).serialize(pos + offset, - data); // rec.length; + Record record = (( Record ) records.get(k)); + // Let's skip RECALCID records, as they are only use for optimization + if(record.getSid() != RecalcIdRecord.sid || ((RecalcIdRecord)record).isNeeded()) { + pos += record.serialize(pos + offset, data); // rec.length; + } } log.log(DEBUG, "Exiting serialize workbook"); return pos; @@ -715,7 +722,11 @@ public class Workbook implements Model { int retval = 0; for (int k = 0; k < records.size(); k++) { - retval += (( Record ) records.get(k)).getRecordSize(); + Record record = (( Record ) records.get(k)); + // Let's skip RECALCID records, as they are only use for optimization + if(record.getSid() != RecalcIdRecord.sid || ((RecalcIdRecord)record).isNeeded()) { + retval += record.getRecordSize(); + } } return retval; } diff --git a/src/java/org/apache/poi/hssf/record/RecordFactory.java b/src/java/org/apache/poi/hssf/record/RecordFactory.java index 9d8b38b90..58b6b228c 100644 --- a/src/java/org/apache/poi/hssf/record/RecordFactory.java +++ b/src/java/org/apache/poi/hssf/record/RecordFactory.java @@ -111,7 +111,7 @@ public class RecordFactory FormulaRecord.class, BoolErrRecord.class, ExternSheetRecord.class, NameRecord.class, LeftMarginRecord.class, RightMarginRecord.class, TopMarginRecord.class, BottomMarginRecord.class, - PaletteRecord.class, StringRecord.class + PaletteRecord.class, StringRecord.class, RecalcIdRecord.class }; } else { records = new Class[] @@ -142,7 +142,7 @@ public class RecordFactory BoolErrRecord.class, ExternSheetRecord.class, NameRecord.class, LeftMarginRecord.class, RightMarginRecord.class, TopMarginRecord.class, BottomMarginRecord.class, - PaletteRecord.class, StringRecord.class + PaletteRecord.class, StringRecord.class, RecalcIdRecord.class }; }