diff --git a/src/java/org/apache/poi/hssf/record/BoolErrRecord.java b/src/java/org/apache/poi/hssf/record/BoolErrRecord.java index 859748a84..4391fc43a 100644 --- a/src/java/org/apache/poi/hssf/record/BoolErrRecord.java +++ b/src/java/org/apache/poi/hssf/record/BoolErrRecord.java @@ -172,12 +172,18 @@ public class BoolErrRecord * set the error value for the cell * * @param value error representing the error value + * this value can only be 0,7,15,23,29,36 or 42 + * see bugzilla bug 16560 for an explanation */ public void setValue(byte value) { - field_4_bBoolErr = value; - field_5_fError = ( byte ) 1; + if ( (value==0)||(value==7)||(value==15)||(value==23)||(value==29)||(value==36)||(value==42)) { + field_4_bBoolErr = value; + field_5_fError = ( byte ) 1; + } else { + throw new RuntimeException("Error Value can only be 0,7,15,23,29,36 or 42. It cannot be "+value); + } } //public short getRow() diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java index dcb114cae..1ad975980 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java @@ -116,7 +116,7 @@ extends TestCase { c=r.createCell((short)2); //c.setCellType(HSSFCell.CELL_TYPE_ERROR); - c.setCellErrorValue((byte)1); + c.setCellErrorValue((byte)7); wb.write(out); @@ -136,7 +136,7 @@ extends TestCase { c = r.getCell((short)1); assertTrue("boolean value 0,1 = 0",c.getErrorCellValue() == 0); c = r.getCell((short)2); - assertTrue("boolean value 0,2 = 1",c.getErrorCellValue() == 1); + assertTrue("boolean value 0,2 = 7",c.getErrorCellValue() == 7); in.close(); }