Ejemplo n.º 1
0
        internal void ParseUnresolvedReference(Cell cell)
        {
            if (UnresolvedRangeReference.IsNullOrEmpty())
            {
                return;
            }

            Match             match;
            ParseArgumentType pat = FormulaParser.GetArgumentType(UnresolvedRangeReference, out match);

            Range range;

            if (cell == null)
            {
                throw new ArgumentNullException("cell");
            }

            bool parsed = FormulaParser.ParseRange(cell, match, out range, pat == ParseArgumentType.AbsoluteRange);

            if (parsed)
            {
                UnresolvedRangeReference = "";

                CellFrom = range.CellFrom;
                CellTo   = range.CellTo;
            }
        }
Ejemplo n.º 2
0
        private static void ParseFormula(Cell cell, Formula formula, string formulaText)
        {
            Match             match;
            ParseArgumentType pat = GetArgumentType(formulaText, out match);

            switch (pat)
            {
            case ParseArgumentType.Function:
            {
                string  function   = match.Groups["FunctionName"].Value;
                Formula subFormula = new Formula();

                subFormula.Add(function).StartGroup();

                string[] parameters = match.Groups["Parameters"].Value.Split(new [] { ',' });

                foreach (string parameter in parameters)
                {
                    ParseFormula(cell, subFormula, parameter);
                }

                subFormula.EndGroup();

                formula.Add(subFormula);

                break;
            }

            case ParseArgumentType.Range:
            case ParseArgumentType.AbsoluteRange:
            {
                Range range = new Range(formulaText);
                formula.Add(range);

                break;
            }

            case ParseArgumentType.None:
            {
                formula.Add(formulaText);

                break;
            }
            }
        }