]> source.dussan.org Git - poi.git/commit
Fix data validation value list evaluation
authorGreg Woolsey <gwoolsey@apache.org>
Wed, 26 Jul 2017 22:19:58 +0000 (22:19 +0000)
committerGreg Woolsey <gwoolsey@apache.org>
Wed, 26 Jul 2017 22:19:58 +0000 (22:19 +0000)
commit3cea90e7c47f193411bf5eda05bbfe3678b6c525
tree1fe93183ef83cbd2f4e2bd13963511adaddb87e7
parent2dda87a8ce6fb264c16ac66f5ca5b477611fc5a7
Fix data validation value list evaluation

One of my users found that my initial implementation was lacking a core distinction - most evaluations expect a single result, and "unwrap" 2/3D ValueEval results to a single value based on the input row/column.

However, data validation list formulas explicitly are expected to return a 2D ValueEval.  This worked when the formula was simple and evaluated to a single Ptg, but only returned one value when the formula was more complex, or referenced a named range defined as a complex formula.

This change teaches WorkbookEvaluator about the distinction, by way of a new attribute for FormulaType.

There is room for discussion over how it is implemented, but this works for me.

Includes the failing workbook we had as a new unit test.

While I was in FormulaType I went ahead and removed the deprecated, unused, and redundant code marked for removal in 3.17.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1803121 13f79535-47bb-0310-9956-ffa450edef68
src/java/org/apache/poi/ss/formula/DataValidationEvaluator.java
src/java/org/apache/poi/ss/formula/FormulaType.java
src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
src/java/org/apache/poi/ss/formula/WorkbookEvaluator.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java
test-data/spreadsheet/dataValidationTableRange.xlsx [new file with mode: 0644]