]> source.dussan.org Git - poi.git/commitdiff
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13500
authorAndrew C. Oliver <acoliver@apache.org>
Thu, 28 Nov 2002 19:20:36 +0000 (19:20 +0000)
committerAndrew C. Oliver <acoliver@apache.org>
Thu, 28 Nov 2002 19:20:36 +0000 (19:20 +0000)
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

src/java/org/apache/poi/hssf/model/Workbook.java
src/java/org/apache/poi/hssf/record/RecordFactory.java

index 4d71c35d72810e9b9896f1236acab4a8621d79b8..a07862b5b355651f36a0451fbd0f00f9d4c27aab 100644 (file)
@@ -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;
     }
index 9d8b38b90c46b8b9a4c44121648205e788d9dacf..58b6b228c5249b4a828f9c7586f352955c596666 100644 (file)
@@ -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
             };
 
         }