public override void Resolver(string formula, string formulaName, ExcelPackage pck, ExcelWorksheet current) { formula = formula.Replace("IF", "").Replace("(", "").Replace(")", ""); var formulaSplitted = formula.Split(','); Condition = new MathOperation(); Condition.Resolver(formulaSplitted[0].TrimEnd().TrimStart(), formulaName, pck, current); Name = Condition.Name; 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); var worksheet = pck.Workbook.Worksheets[location.WorksheetName]; IfTrue = worksheet.Cells[location.Column, location.Row - 1].Value.ToString(); } else { IfTrue = formulaSplitted[1].TrimEnd().TrimStart(); } match = regex.Match(formulaSplitted[2].TrimEnd().TrimStart()); if (match.Success && !formulaSplitted[2].Contains('.')) { var location = Location.GetLocation(formulaSplitted[2].TrimEnd().TrimStart(), current); var worksheet = pck.Workbook.Worksheets[location.WorksheetName]; IfFalse = worksheet.Cells[location.Column, location.Row - 1].Value.ToString(); } else { IfFalse = formulaSplitted[2].TrimEnd().TrimStart(); } }
public static List <Function> DetermineFunction(ExcelPackage pck) { ExcelWorksheet worksheet = pck.Workbook.Worksheets["ConfigurationSetup"]; int row = 1; List <Function> functions = new List <Function>(); for (row = 2; worksheet.Cells[row, helperFunctions].Value != null; row++) { Function result = null; if (!worksheet.Cells[row, helperFunctions].Value.ToString().Equals("empty")) { var formula = worksheet.Cells[row, helperFunctions].Formula; string functionName = worksheet.Cells[row, helperFunctions - 1].Value.ToString(); if (formula.ToUpper().StartsWith("DGET")) { result = new Dget(); result.Resolver(formula, functionName, pck, worksheet); } else if (formula.ToUpper().StartsWith("IF")) { result = new IfCondition(); result.Resolver(formula, functionName, pck, worksheet); } else if (formula.ToUpper().StartsWith("ROUND")) { result = new Round(); result.Resolver(formula, functionName, pck, worksheet); } else if (formula.ToUpper().StartsWith("EXACT")) { result = new Exact(); result.Resolver(formula, functionName, pck, worksheet); } else { result = new MathOperation(); result.Resolver(formula, functionName, pck, worksheet); } functions.Add(result); } } return(functions); }