|  | using System; | 
|  | using System.Collections.Generic; | 
|  | using System.IO; | 
|  | using System.Linq; | 
|  | using System.Text; | 
|  | using OfficeOpenXml; | 
|  |  | 
|  | namespace EPPlusSamples | 
|  | { | 
|  | class Sample_FormulaCalc | 
|  | { | 
|  | public static void RunSampleFormulaCalc() | 
|  | { | 
|  | using (var package = new ExcelPackage(new MemoryStream())) | 
|  | { | 
|  | var ws1 = package.Workbook.Worksheets.Add("ws1"); | 
|  | // Add some values to sum | 
|  | ws1.Cells["A1"].Formula = "(2*2)/2"; | 
|  | ws1.Cells["A2"].Value = 4; | 
|  | ws1.Cells["A3"].Value = 6; | 
|  | ws1.Cells["A4"].Formula = "SUM(A1:A3)"; | 
|  |  | 
|  | // calculate all formulas on  the worksheet | 
|  | ws1.Calculate(); | 
|  |  | 
|  | // Print the calculated value | 
|  | Console.WriteLine("SUM(A1:A3) evaluated to {0}", ws1.Cells["A4"].Value); | 
|  |  | 
|  | // Add another worksheet | 
|  | var ws2 = package.Workbook.Worksheets.Add("ws2"); | 
|  | ws2.Cells["A1"].Value = 3; | 
|  | ws2.Cells["A2"].Formula = "SUM(A1,ws1!A4)"; | 
|  |  | 
|  | // calculate all formulas in the entire workbook | 
|  | package.Workbook.Calculate(); | 
|  |  | 
|  | // Print the calculated value | 
|  | Console.WriteLine("SUM(A1,ws1!A4) evaluated to {0}", ws2.Cells["A2"].Value); | 
|  |  | 
|  | // Calculate a range | 
|  | ws1.Cells["B1"].Formula = "IF(TODAY()<DATE(2014,6,1),\"BEFORE\" &\" FIRST\",CONCATENATE(\"FIRST\",\" OF\",\" JUNE 2014 OR LATER\"))"; | 
|  | ws1.Cells["B1"].Calculate(); | 
|  |  | 
|  | // Print the calculated value | 
|  | Console.WriteLine("IF(TODAY()<DATE(2014,6,1),\"BEFORE\" &\" FIRST\",CONCATENATE(\"FIRST\",\" OF\",\" JUNE 2014 OR LATER\")) evaluated to {0}", ws1.Cells["B1"].Value); | 
|  |  | 
|  | // Evaluate a formula string (without calculate depending cells). | 
|  | // That means that if A1 contains a formula that hasn't been calculated it take the value from a1, blank or zero if it's a new formula. | 
|  | // In this case A1 has been calculated (2), so everything should be ok! | 
|  | const string formula = "(2+4)*ws1!A1"; | 
|  | var result = package.Workbook.FormulaParserManager.Parse(formula); | 
|  |  | 
|  | // Print the calculated value | 
|  | Console.WriteLine("(2+4)*ws1!A2 evaluated to {0}", result); | 
|  |  | 
|  | // Evaluate a formula string (Calculate depending cells) | 
|  | // A1 will be recalculated. | 
|  | var result2 = ws1.Calculate("(2+4)*A1"); | 
|  |  | 
|  | } | 
|  | } | 
|  | } | 
|  | } |