Browse Source

[bug-65939] add partial fix for clearing formula with circular ref

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898680 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_5_2_2
PJ Fanning 2 years ago
parent
commit
3a496fded8

+ 5
- 1
poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCell.java View File

@@ -604,7 +604,11 @@ public class HSSFCell extends CellBase {
case ERROR:
byte errorValue = (byte) ((FormulaRecordAggregate)_record).getFormulaRecord().getCachedErrorValue();
_record = new BoolErrRecord();
((BoolErrRecord)_record).setValue(errorValue);
try {
((BoolErrRecord)_record).setValue(errorValue);
} catch (IllegalArgumentException ise) {
((BoolErrRecord)_record).setValue((byte) ErrorEval.REF_INVALID.getErrorCode());
}
_cellType = CellType.ERROR;
break;
default:

+ 3
- 3
poi/src/test/java/org/apache/poi/ss/formula/TestFormulaEval.java View File

@@ -25,7 +25,6 @@ import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import java.io.IOException;
@@ -34,7 +33,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;

class TestFormulaEval {

@Disabled("https://bz.apache.org/bugzilla/show_bug.cgi?id=65939")
@Test
void testCircularRef() throws IOException {
try (HSSFWorkbook wb = new HSSFWorkbook()) {
@@ -46,8 +44,10 @@ class TestFormulaEval {
// the following assert should probably be NUMERIC not ERROR (from testing in Excel itself)
assertEquals(CellType.ERROR, formulaEvaluator.evaluateFormulaCell(cell));

cell.setCellFormula(null); //this line fails
cell.setCellFormula(null);
formulaEvaluator.notifyUpdateCell(cell);
//the following assert should probably be BLANK not ERROR
assertEquals(CellType.ERROR, cell.getCellType());
}
}
}

Loading…
Cancel
Save