diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index 6bbcf1a8c..314303743 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -359,9 +359,9 @@ public final class XSSFCell implements Cell { */ public void setCellFormula(String formula) { XSSFWorkbook wb = row.getSheet().getWorkbook(); - if (formula == null && cell.isSetF()) { + if (formula == null) { wb.onDeleteFormula(this); - cell.unsetF(); + if(cell.isSetF()) cell.unsetF(); return; } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java index 1a987c1ac..4e747b289 100755 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java @@ -265,7 +265,13 @@ public abstract class BaseTestCell extends TestCase { assertEquals("I changed!", c2.getStringCellValue()); assertEquals(Cell.CELL_TYPE_FORMULA, c2.getCellType()); assertEquals(Cell.CELL_TYPE_STRING, c2.getCachedFormulaResultType()); - } + + //calglin Cell.setCellFormula(null) for a non-formula cell + Cell c3 = r.createCell(2); + c3.setCellFormula(null); + assertEquals(Cell.CELL_TYPE_BLANK, c3.getCellType()); + + } private Cell createACell() { return _testDataProvider.createWorkbook().createSheet("Sheet1").createRow(0).createCell(0); }