Bug 61469

Summary: [PATCH] Support Array Formulas and Matrix Functions
Product: POI Reporter: Robert D Hulbert <bob951321>
Component: SS CommonAssignee: POI Developers List <dev>
Severity: enhancement Keywords: PatchAvailable
Priority: P2    
Version: 3.17-dev   
Target Milestone: ---   
Hardware: PC   
OS: All   
Attachments: Array Formula and Matrix Function Patch
Numeric Array Formulas and Matrix Function Test Cases

Description Robert D Hulbert 2017-08-29 15:48:16 UTC
Created attachment 35267 [details]
Array Formula and Matrix Function Patch

Hi all,

Array formulas and matrix functions are currently not supported in any version of POI.

In order to store evaluated Excel arrays, I implemented CacheAreaEval which is based off of MockAreaEval which holds values for each of the cells in the array range.

I have also added MatrixFunction which allows for the evaluation of transpose, mdeterm, minverse, and mmult. This file does depend on commons math3.

The other modifications allow for the evaluation of arrays within the formula evaluation stack.

Please let me know if there are any changes that need to take place or any other information is necessary.

I apologize for the size of the patch; I have just recently received approval from Lawrence Livermore National Laboratory to release the code that was worked on all summer.

Best Regards,
Robert Hulbert
Comment 1 Robert D Hulbert 2017-08-29 15:50:11 UTC
Created attachment 35268 [details]
Numeric Array Formulas and Matrix Function Test Cases
Comment 2 PJ Fanning 2017-08-29 23:17:21 UTC
Thanks Robert. I have a preference for viewing the patches in github - and it allows for easier reviewing. If you have time, would you be able to fork https://github.com/apache/poi, apply your patch and then create a Pull Request?
Comment 3 PJ Fanning 2017-08-30 22:12:40 UTC
From http://apache-poi.1045710.n5.nabble.com/VOTE-Apache-POI-3-17-release-RC2-td5728603.html, it seems we are best off leaving this merge until 3.17 is released. Latest code is in https://github.com/apache/poi/pull/69
Comment 4 Dominik Stadler 2017-09-19 20:50:48 UTC
This seems to be applied via r1808297, is there anything still missing?