Beispiel #1
0
        public override void ResolverProcedure(string formula, int sequence, int procedureRow, int functionRow, ExcelPackage pck, ExcelWorksheet current)
        {
            Name    = sequence.ToString();
            formula = formula.Replace("IF", "").Replace("(", "").Replace(")", "");
            var formulaSplitted = formula.Split(',');

            Condition = new MathOperation();
            Condition.ResolverProcedure(formulaSplitted[0].TrimEnd().TrimStart(), sequence, procedureRow, functionRow, pck, current);

            Regex regex = new Regex(@"\D\d");
            Match match = regex.Match(formulaSplitted[1].TrimEnd().TrimStart());

            if (match.Success && !formulaSplitted[1].Contains('.'))
            {
                var location = Location.GetLocation(formulaSplitted[1].TrimEnd().TrimStart(), current);
                //tujj novo
                if (location.Row == procedureRow)
                {
                    IfTrue = "Procedure" + location.Column;
                }
                else
                {
                    IfTrue = current.Cells[location.Column, location.Row - 1].Value.ToString();
                }
            }
            else
            {
                IfTrue = formulaSplitted[1].TrimEnd().TrimStart();
            }

            match = regex.Match(formulaSplitted[2].TrimEnd().TrimStart());
            if (match.Success)
            {
                var location = Location.GetLocation(formulaSplitted[2].TrimEnd().TrimStart(), current);
                //tujj novo
                if (location.Row == procedureRow)
                {
                    IfFalse = "Procedure" + location.Column;
                }
                else
                {
                    IfFalse = current.Cells[location.Column, location.Row - 1].Value.ToString();
                }
            }
            else
            {
                IfFalse = formulaSplitted[2].TrimEnd().TrimStart();
            }
        }
Beispiel #2
0
        public static List <Function> DetermineProcedure(ExcelPackage pck)
        {
            ExcelWorksheet  worksheet      = pck.Workbook.Worksheets["ConfigurationSetup"];
            List <Function> proceduresList = new List <Function>();
            int             row            = 1;
            string          functionName   = worksheet.Cells[row, procedures - 1].Value.ToString();

            for (row = 2; worksheet.Cells[row, procedures].Value != null; row++)
            {
                Function result = null;
                if (!worksheet.Cells[row, procedures].Value.ToString().Equals("empty"))
                {
                    var formula = worksheet.Cells[row, procedures].Formula;

                    if (formula.ToUpper().StartsWith("DGET"))
                    {
                        result = new Dget();
                        result.ResolverProcedure(formula, row, procedures, helperFunctions, pck, worksheet);
                    }
                    else if (formula.ToUpper().StartsWith("IF"))
                    {
                        result = new IfCondition();
                        result.ResolverProcedure(formula, row, procedures, helperFunctions, pck, worksheet);
                    }
                    else if (formula.ToUpper().StartsWith("EXACT"))
                    {
                        result = new Exact();
                        result.ResolverProcedure(formula, row, procedures, helperFunctions, pck, worksheet);
                    }
                    else if (formula.ToUpper().StartsWith("ROUND"))
                    {
                        result = new Round();
                        result.ResolverProcedure(formula, row, procedures, helperFunctions, pck, worksheet);
                    }
                    else
                    {
                        result = new MathOperation();
                        result.ResolverProcedure(formula, row, procedures, helperFunctions, pck, worksheet);
                    }
                    proceduresList.Add(result);
                }
            }
            return(proceduresList);
        }