]> source.dussan.org Git - poi.git/commitdiff
http://issues.apache.org/bugzilla/show_bug.cgi?id=23951 tags/REL_3_0_1_RC1@544164
authorAndrew C. Oliver <acoliver@apache.org>
Mon, 4 Jun 2007 13:52:57 +0000 (13:52 +0000)
committerAndrew C. Oliver <acoliver@apache.org>
Mon, 4 Jun 2007 13:52:57 +0000 (13:52 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@544151 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/model/Workbook.java
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java

index be5c870a89fab08826e94bd6fdd18c873fe4b751..5071735b6043a2b5baa2dbdfb9059986f97b201f 100644 (file)
@@ -738,6 +738,7 @@ public class Workbook implements Model
 
         SSTRecord sst = null;
         int sstPos = 0;
+        boolean wroteBoundSheets = false;
         for ( int k = 0; k < records.size(); k++ )
         {
 
@@ -745,6 +746,7 @@ public class Workbook implements Model
             // Let's skip RECALCID records, as they are only use for optimization
             if ( record.getSid() != RecalcIdRecord.sid || ( (RecalcIdRecord) record ).isNeeded() )
             {
+                int len = 0; 
                 if (record instanceof SSTRecord)
                 {
                     sst = (SSTRecord)record;
@@ -754,7 +756,17 @@ public class Workbook implements Model
                 {
                     record = sst.createExtSSTRecord(sstPos + offset);
                 }
-                int len = record.serialize( pos + offset, data );
+                if (record instanceof BoundSheetRecord) {
+                     if(!wroteBoundSheets) {
+                        for (int i = 0; i < boundsheets.size(); i++) {
+                            len+= ((BoundSheetRecord)boundsheets.get(i))
+                                             .serialize(pos+offset+len, data);
+                        }
+                        wroteBoundSheets = true;
+                     }
+                } else {
+                   len = record.serialize( pos + offset, data );
+                }
                 /////  DEBUG BEGIN /////
 //                if (len != record.getRecordSize())
 //                    throw new IllegalStateException("Record size does not match serialized bytes.  Serialized size = " + len + " but getRecordSize() returns " + record.getRecordSize());
index f90717e9866f994968c61f6292bf85cee93a0e6c..4b0a0bbcf792d7a87130a03900552b8ab2312ccb 100644 (file)
@@ -321,6 +321,7 @@ public class HSSFWorkbook
      */
 
     public void setSheetOrder(String sheetname, int pos ) {
+        sheets.add(pos,sheets.remove(getSheetIndex(sheetname)));
         workbook.setSheetOrder(sheetname, pos);
     }