The following code: wb.createSheet("SheetX").createRow(0).createCell((short)0); causes the new Sheet object to have the ValueRecordsAggregate listed before the RowRecordsAggregate. This causes a bug in Sheet.serializeIndexRecord() where 'sheetRecSize' incorrectly includes the VRA size, thus causing the INDEX record to have wrong offsets to the DBCELL records. When a workbookis read from file, the RRA is created before the VRA, so the bug does not occur in that case. Re-serializing a workbook fixes the incorrect INDEX record.
Fixed in svn r663765.