diff --git a/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java b/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java index 295721b4dd..97f20cebc5 100644 --- a/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java +++ b/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java @@ -17,6 +17,7 @@ package org.apache.poi.ss.formula.functions; +import java.util.Locale; import java.util.function.Supplier; import org.apache.poi.ss.formula.eval.AreaEval; @@ -30,6 +31,7 @@ import org.apache.poi.ss.formula.eval.StringEval; import org.apache.poi.ss.formula.eval.StringValueEval; import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.util.NumberComparer; +import org.apache.poi.util.LocaleUtil; /** * This class performs a D* calculation. It takes an {@link IDStarAlgorithm} object and @@ -316,7 +318,7 @@ public final class DStarRunner implements Function3Arg { return testNumericCondition(value, operator.equal, stringOrNumber); } else { // It's a string. String valueString = value instanceof BlankEval ? "" : OperandResolver.coerceValueToString(value); - return stringOrNumber.equals(valueString); + return stringOrNumber.equalsIgnoreCase(valueString); } } else { // It's a text starts-with condition. if(conditionString.isEmpty()) { @@ -324,7 +326,7 @@ public final class DStarRunner implements Function3Arg { } else { String valueString = value instanceof BlankEval ? "" : OperandResolver.coerceValueToString(value); - return valueString.startsWith(conditionString); + return valueString.toLowerCase(LocaleUtil.getUserLocale()).startsWith(conditionString.toLowerCase(LocaleUtil.getUserLocale())); } } } else if(condition instanceof NumericValueEval) { diff --git a/test-data/spreadsheet/DGet.xls b/test-data/spreadsheet/DGet.xls index ddec841904..bd66d4e8ec 100644 Binary files a/test-data/spreadsheet/DGet.xls and b/test-data/spreadsheet/DGet.xls differ