git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@766103 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_5_BETA6
@@ -37,6 +37,8 @@ | |||
<!-- Don't forget to update status.xml too! --> | |||
<release version="3.5-beta6" date="2009-??-??"> | |||
<action dev="POI-DEVELOPERS" type="fix">47028 - Fixed XSSFCell to preserve cell style when cell value is set to blank</action> | |||
<action dev="POI-DEVELOPERS" type="fix">47026 - Avoid NPE in XSSFCell.setCellType() when workbook does not have SST</action> | |||
<action dev="POI-DEVELOPERS" type="fix">46987 - Allow RecordFactory to handle non-zero padding at the end of the workbook stream</action> | |||
<action dev="POI-DEVELOPERS" type="fix">47034 - Fix reading the name of a NameRecord when the name is very long</action> | |||
<action dev="POI-DEVELOPERS" type="fix">47001 - Fixed WriteAccessRecord and LinkTable to handle unusual format written by Google Docs</action> |
@@ -34,6 +34,8 @@ | |||
<!-- Don't forget to update changes.xml too! --> | |||
<changes> | |||
<release version="3.5-beta6" date="2009-??-??"> | |||
<action dev="POI-DEVELOPERS" type="fix">47028 - Fixed XSSFCell to preserve cell style when cell value is set to blank</action> | |||
<action dev="POI-DEVELOPERS" type="fix">47026 - Avoid NPE in XSSFCell.setCellType() when workbook does not have SST</action> | |||
<action dev="POI-DEVELOPERS" type="fix">46987 - Allow RecordFactory to handle non-zero padding at the end of the workbook stream</action> | |||
<action dev="POI-DEVELOPERS" type="fix">47034 - Fix reading the name of a NameRecord when the name is very long</action> | |||
<action dev="POI-DEVELOPERS" type="fix">47001 - Fixed WriteAccessRecord and LinkTable to handle unusual format written by Google Docs</action> |
@@ -627,6 +627,7 @@ public final class XSSFCell implements Cell { | |||
private void setBlank(){ | |||
CTCell blank = CTCell.Factory.newInstance(); | |||
blank.setR(cell.getR()); | |||
blank.setS(cell.getS()); | |||
cell.set(blank); | |||
} | |||
@@ -179,6 +179,11 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X | |||
} | |||
} | |||
if(sharedStringSource == null) { | |||
//Create SST if it is missing | |||
sharedStringSource = (SharedStringsTable)createRelationship(XSSFRelation.SHARED_STRINGS, XSSFFactory.getInstance()); | |||
} | |||
// Load individual sheets. The order of sheets is defined by the order of CTSheet elements in the workbook | |||
sheets = new ArrayList<XSSFSheet>(shIdMap.size()); | |||
for (CTSheet ctSheet : this.workbook.getSheets().getSheetArray()) { | |||
@@ -192,11 +197,6 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X | |||
sheets.add(sh); | |||
} | |||
if(sharedStringSource == null) { | |||
//Create SST if it is missing | |||
sharedStringSource = (SharedStringsTable)createRelationship(XSSFRelation.SHARED_STRINGS, XSSFFactory.getInstance()); | |||
} | |||
// Process the named ranges | |||
namedRanges = new ArrayList<XSSFName>(); | |||
if(workbook.isSetDefinedNames()) { |
@@ -17,7 +17,7 @@ | |||
package org.apache.poi.xssf.usermodel; | |||
import org.apache.poi.ss.usermodel.BaseTestCell; | |||
import org.apache.poi.ss.usermodel.*; | |||
import org.apache.poi.xssf.XSSFITestDataProvider; | |||
/** | |||
@@ -28,4 +28,26 @@ public final class TestXSSFCell extends BaseTestCell { | |||
public TestXSSFCell() { | |||
super(XSSFITestDataProvider.getInstance()); | |||
} | |||
/** | |||
* Bug 47026: trouble changing cell type when workbook doesn't contain | |||
* Shared String Table | |||
*/ | |||
public void test47026_1() throws Exception { | |||
Workbook source = _testDataProvider.openSampleWorkbook("47026.xlsm"); | |||
Sheet sheet = source.getSheetAt(0); | |||
Row row = sheet.getRow(0); | |||
Cell cell = row.getCell(0); | |||
cell.setCellType(Cell.CELL_TYPE_STRING); | |||
cell.setCellValue("456"); | |||
} | |||
public void test47026_2() throws Exception { | |||
Workbook source = _testDataProvider.openSampleWorkbook("47026.xlsm"); | |||
Sheet sheet = source.getSheetAt(0); | |||
Row row = sheet.getRow(0); | |||
Cell cell = row.getCell(0); | |||
cell.setCellFormula(null); | |||
cell.setCellValue("456"); | |||
} | |||
} |
@@ -22,7 +22,6 @@ import java.util.Calendar; | |||
import junit.framework.AssertionFailedError; | |||
import junit.framework.TestCase; | |||
import org.apache.poi.hssf.usermodel.HSSFRichTextString; | |||
import org.apache.poi.ss.ITestDataProvider; | |||
/** | |||
@@ -31,7 +30,7 @@ import org.apache.poi.ss.ITestDataProvider; | |||
*/ | |||
public abstract class BaseTestCell extends TestCase { | |||
private final ITestDataProvider _testDataProvider; | |||
protected final ITestDataProvider _testDataProvider; | |||
/** | |||
* @param testDataProvider an object that provides test data in HSSF / XSSF specific way | |||
@@ -401,9 +400,23 @@ public abstract class BaseTestCell extends TestCase { | |||
Cell cell = wb.createSheet("Sheet1").createRow(0).createCell(0); | |||
cell.setCellFormula("B1&C1"); | |||
try { | |||
cell.setCellValue(new HSSFRichTextString("hello")); | |||
cell.setCellValue(wb.getCreationHelper().createRichTextString("hello")); | |||
} catch (ClassCastException e) { | |||
throw new AssertionFailedError("Identified bug 44606"); | |||
} | |||
} | |||
/** | |||
* Make sure that cell.setCellType(Cell.CELL_TYPE_BLANK) preserves the cell style | |||
*/ | |||
public void testSetBlank_bug47028() { | |||
Workbook wb = _testDataProvider.createWorkbook(); | |||
CellStyle style = wb.createCellStyle(); | |||
Cell cell = wb.createSheet("Sheet1").createRow(0).createCell(0); | |||
cell.setCellStyle(style); | |||
int i1 = cell.getCellStyle().getIndex(); | |||
cell.setCellType(Cell.CELL_TYPE_BLANK); | |||
int i2 = cell.getCellStyle().getIndex(); | |||
assertEquals(i1, i2); | |||
} | |||
} |