This could be a good transition from a spreadsheet to a report. I wonder how data binding could work for that?
My initial thoughts were how does a spreadsheet do it? but it's a different kind of beast.
In search of a parser toolkit I had come across this https://github.com/handsontable/hyperformula which uses chevrotain to parse spreadsheet formulas and decided to use chevrotain for the parsing.