<!-- 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>
<!-- 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>
private void setBlank(){
CTCell blank = CTCell.Factory.newInstance();
blank.setR(cell.getR());
+ blank.setS(cell.getS());
cell.set(blank);
}
}
}
+ 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()) {
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()) {
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;
/**
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");
+ }
}
\ No newline at end of file
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
-import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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
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);
+ }
}