]> source.dussan.org Git - poi.git/commitdiff
Fixed XSSFCell to avoid generating xsi:nil entries in shared string table
authorYegor Kozlov <yegor@apache.org>
Sat, 30 May 2009 10:37:08 +0000 (10:37 +0000)
committerYegor Kozlov <yegor@apache.org>
Sat, 30 May 2009 10:37:08 +0000 (10:37 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@780228 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java

index 5689633510e98ab6ba54fb772eb660a22e150778..dc160de51d71cda2e9118a3615020246d4bd137e 100644 (file)
@@ -34,6 +34,7 @@
        <!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.5-beta6" date="2009-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">47278 - Fixed XSSFCell to avoid generating xsi:nil entries in shared string table</action>
            <action dev="POI-DEVELOPERS" type="fix">47206 - Fixed XSSFCell to properly read inline strings</action>
            <action dev="POI-DEVELOPERS" type="add">47250 - Fixed FontRecord to expect unicode flags even when name length is zero</action>
            <action dev="POI-DEVELOPERS" type="add">47198 - Fixed formula evaluator comparison of -0.0 and 0.0</action>
index 63a3d80813d33327ccb663e7e7ac17a2f58831ca..e817553a4c90fd2aec0cec4f63b237bc5e9b4234 100644 (file)
@@ -293,7 +293,7 @@ public final class XSSFCell implements Cell {
      * If value is null then we will change the cell to a Blank cell.
      */
     public void setCellValue(RichTextString str) {
-        if(str == null){
+        if(str == null || str.getString() == null){
             setBlank();
             return;
         }
index 40a937b11021418d7390e2f293c7d7842ca625cd..a5abde4adc1494e9badb4813ed810cc5dd26f8b9 100755 (executable)
@@ -19,6 +19,7 @@ package org.apache.poi.xssf.usermodel;
 
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.XSSFITestDataProvider;
+import org.apache.poi.xssf.model.SharedStringsTable;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType;
 
 /**
@@ -79,4 +80,30 @@ public final class TestXSSFCell extends BaseTestCell {
         assertTrue(cell_2.getCTCell().isSetIs());
         assertEquals("bar", row.getCell(2).getStringCellValue());
     }
+
+    /**
+     *  Bug 47278 -  xsi:nil attribute for <t> tag caused Excel 2007 to fail to open workbook
+     */
+    public void test47278() throws Exception {
+        XSSFWorkbook wb = (XSSFWorkbook)_testDataProvider.createWorkbook();
+        XSSFSheet sheet = wb.createSheet();
+        XSSFRow row = sheet.createRow(0);
+        SharedStringsTable sst = wb.getSharedStringSource();
+        assertEquals(0, sst.getCount());
+
+        //case 1. cell.setCellValue(new XSSFRichTextString((String)null));
+        XSSFCell cell_0 = row.createCell(0);
+        XSSFRichTextString str = new XSSFRichTextString((String)null);
+        assertNull(str.getString());
+        cell_0.setCellValue(str);
+        assertEquals(0, sst.getCount());
+        assertEquals(XSSFCell.CELL_TYPE_BLANK, cell_0.getCellType());
+
+        //case 2. cell.setCellValue((String)null);
+        XSSFCell cell_1 = row.createCell(1);
+        cell_1.setCellValue((String)null);
+        assertEquals(0, sst.getCount());
+        assertEquals(XSSFCell.CELL_TYPE_BLANK, cell_1.getCellType());
+    }
+    
 }
\ No newline at end of file