From: Nick Burch Date: Thu, 31 Oct 2013 16:53:03 +0000 (+0000) Subject: Allow formatting of formula error cells, giving back the error string that Excel... X-Git-Tag: REL_3_10_FINAL~75 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=374ea84aa6c74a0a0bb540958be41eb90c9cf7a5;p=poi.git Allow formatting of formula error cells, giving back the error string that Excel shows #55729 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1537552 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index 4e3718e956..273dd89ef2 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -829,6 +829,8 @@ public class DataFormatter { return String.valueOf(cell.getBooleanCellValue()); case Cell.CELL_TYPE_BLANK : return ""; + case Cell.CELL_TYPE_ERROR: + return FormulaError.forInt(cell.getErrorCellValue()).getString(); } throw new RuntimeException("Unexpected celltype (" + cellType + ")"); } diff --git a/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java b/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java index 6ce19fb5e9..20825e576e 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java +++ b/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java @@ -28,6 +28,7 @@ import java.util.Locale; import junit.framework.TestCase; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.TestHSSFDataFormatter; /** @@ -491,6 +492,22 @@ public class TestDataFormatter extends TestCase { assertEquals(" - ", dfUS.formatRawCellContents(0.0, -1, "_-* #,##0.00_-;-* #,##0.00_-;_-* \"-\"??_-;_-@_-")); assertEquals(" $- ", dfUS.formatRawCellContents(0.0, -1, "_-$* #,##0.00_-;-$* #,##0.00_-;_-$* \"-\"??_-;_-@_-")); } + + public void testErrors() { + DataFormatter dfUS = new DataFormatter(Locale.US, true); + + // Create a spreadsheet with some formula errors in it + Workbook wb = new HSSFWorkbook(); + Sheet s = wb.createSheet(); + Row r = s.createRow(0); + Cell c = r.createCell(0, Cell.CELL_TYPE_ERROR); + + c.setCellErrorValue(FormulaError.DIV0.getCode()); + assertEquals(FormulaError.DIV0.getString(), dfUS.formatCellValue(c)); + + c.setCellErrorValue(FormulaError.REF.getCode()); + assertEquals(FormulaError.REF.getString(), dfUS.formatCellValue(c)); + } /** * TODO Fix these so that they work