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(); } }
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); }