You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by ye...@apache.org on 2007/03/20 15:59:30 UTC

svn commit: r520416 - in /jakarta/poi/trunk/src: java/org/apache/poi/hssf/model/Sheet.java java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java

Author: yegor
Date: Tue Mar 20 07:59:29 2007
New Revision: 520416

URL: http://svn.apache.org/viewvc?view=rev&rev=520416
Log:
fixed bug 41761: NPE when serializing a workbook with empty rows 

Modified:
    jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java
    jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java
    jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java

Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java
URL: http://svn.apache.org/viewvc/jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java?view=diff&rev=520416&r1=520415&r2=520416
==============================================================================
--- jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java (original)
+++ jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java Tue Mar 20 07:59:29 2007
@@ -783,7 +783,7 @@
       int dbCellOffset = 0;
       for (int block=0;block<blockCount;block++) {
         rowBlockOffset += rows.getRowBlockSize(block);
-        cellBlockOffset += cells.getRowCellBlockSize(rows.getStartRowNumberForBlock(block),
+        cellBlockOffset += null == cells ? 0 : cells.getRowCellBlockSize(rows.getStartRowNumberForBlock(block),
                                                      rows.getEndRowNumberForBlock(block));
         //Note: The offsets are relative to the Workbook BOF. Assume that this is
         //0 for now.....

Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java
URL: http://svn.apache.org/viewvc/jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java?view=diff&rev=520416&r1=520415&r2=520416
==============================================================================
--- jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java (original)
+++ jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java Tue Mar 20 07:59:29 2007
@@ -213,7 +213,7 @@
           //Note: Cell references start from the second row...
           int cellRefOffset = (rowBlockSize-20);
           for (int row=startRowNumber;row<=endRowNumber;row++) {
-            if (cells.rowHasCells(row)) {
+            if (null != cells && cells.rowHasCells(row)) {
               final int rowCellSize = cells.serializeCellRow(row, pos, data);
               pos += rowCellSize;
               //Add the offset to the first cell for the row into the DBCellRecord.

Modified: jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
URL: http://svn.apache.org/viewvc/jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java?view=diff&rev=520416&r1=520415&r2=520416
==============================================================================
--- jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java (original)
+++ jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java Tue Mar 20 07:59:29 2007
@@ -19,9 +19,7 @@
 
 package org.apache.poi.hssf.usermodel;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.*;
 
 import junit.framework.TestCase;
 
@@ -481,8 +479,43 @@
 	HSSFCell c = r.createCell((short)0);
 	assertEquals("style should match", style.getIndex(), c.getCellStyle().getIndex());
     }
-	 
-	 
+
+
+    /**
+     *
+     */
+    public void testAddEmptyRow() throws Exception {
+        //try to add 5 empty rows to a new sheet
+        HSSFWorkbook workbook = new HSSFWorkbook();
+        HSSFSheet sheet = workbook.createSheet();
+        for (int i = 0; i < 5; i++) sheet.createRow(i);
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        workbook.write(out);
+        out.close();
+
+        workbook = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+        assertTrue("No Exceptions while reading file", true);
+
+        //try adding empty rows in an existing worksheet
+        String cwd = System.getProperty("HSSF.testdata.path");
+        FileInputStream in = new FileInputStream(new File(cwd, "Simple.xls"));
+        workbook = new HSSFWorkbook(in);
+        in.close();
+        assertTrue("No Exceptions while reading file", true);
+
+        sheet = workbook.getSheetAt(0);
+        for (int i = 3; i < 10; i++) sheet.createRow(i);
+
+        out = new ByteArrayOutputStream();
+        workbook.write(out);
+        out.close();
+
+        workbook = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+        assertTrue("No Exceptions while reading file", true);
+
+    }
+
 	public static void main(java.lang.String[] args) {
 		 junit.textui.TestRunner.run(TestHSSFSheet.class);
 	}    



---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/