private EvaluationResult Evaluate(string name, string cell, IEnumerable <ExcelFormulaToken> tokens, ExpressionScope scope, ExpressionFormat format) { var result = new EvaluationResult() { Name = name, Cell = cell }; try { var queue = new Queue <ExcelFormulaToken>(tokens); var excelExpression = new ExcelExpression(); TraverseExpression(excelExpression, queue, scope); var operand = excelExpression.Evaluate(scope); scope.Set(cell ?? name, operand.Value); result.Value = operand.Value.InnerValue; result.Text = operand.Value?.ToString(outputLang, format); } catch (Exception ex) { result.Error = ex.Message; } finally { } return(result); }