diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java b/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java index 78d58e7767..c7725d3818 100644 --- a/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -950,7 +950,14 @@ public class DataFormatter { if (numberFormat == null) { return Double.toString(d); } - String formatted = numberFormat.format(new BigDecimal(Double.toString(d))); + String formatted; + try { + //see https://github.com/apache/poi/pull/321 -- but this sometimes fails as Double.toString + //can produce strings that can't be parsed by BigDecimal + formatted = numberFormat.format(new BigDecimal(Double.toString(d))); + } catch (NumberFormatException nfe) { + formatted = numberFormat.format(d); + } return formatted.replaceFirst("E(\\d)", "E+$1"); // to match Excel's E-notation }