diff --git a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java index eb232c6ecf..8ddb368e0a 100644 --- a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java +++ b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java @@ -336,7 +336,8 @@ public final class InternalWorkbook { records.add(new InterfaceHdrRecord(CODEPAGE)); records.add(createMMS()); records.add(InterfaceEndRecord.instance); - records.add(createWriteAccess()); + // store the write-access record at the proper position + retval.getWriteAccess(); records.add(createCodepage()); records.add(createDSF()); records.add(createTabId()); diff --git a/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java b/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java index 996f450922..bc8db67c85 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java @@ -154,4 +154,22 @@ public final class TestWorkbook { wb.close(); } + + @Test + public void testWriteAccess() { + HSSFWorkbook wb = new HSSFWorkbook(); + InternalWorkbook iwb = TestHSSFWorkbook.getInternalWorkbook(wb); + + int oldRecordsCount = iwb.getNumRecords(); + //System.out.println("records count = " + oldRecordsCount); + assertEquals("records count", 68, oldRecordsCount); + + WriteAccessRecord writeAccess = iwb.getWriteAccess(); + assertNotNull(writeAccess); + assertEquals(WriteAccessRecord.sid, writeAccess.getSid()); + + int newRecordsCount = iwb.getNumRecords(); + //System.out.println("records count after 'getWriteAccess' = " + newRecordsCount); + assertEquals("records count after getWriteAccess", oldRecordsCount, newRecordsCount); + } }