| using System; | 
 | using System.Text; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
 | using OfficeOpenXml; | 
 | using OfficeOpenXml.ConditionalFormatting; | 
 | using System.IO; | 
 | using OfficeOpenXml.ConditionalFormatting.Contracts; | 
 | using System.Drawing; | 
 |  | 
 | namespace EPPlusTest | 
 | { | 
 |   /// <summary> | 
 |   /// Test the Conditional Formatting feature | 
 |   /// </summary> | 
 |   [TestClass] | 
 |   public class ConditionalFormatting | 
 |   { | 
 |     private TestContext testContextInstance; | 
 |     private static ExcelPackage _pck; | 
 |  | 
 |     /// <summary> | 
 |     ///Gets or sets the test context which provides | 
 |     ///information about and functionality for the current test run. | 
 |     ///</summary> | 
 |     public TestContext TestContext | 
 |     { | 
 |       get | 
 |       { | 
 |         return testContextInstance; | 
 |       } | 
 |       set | 
 |       { | 
 |         testContextInstance = value; | 
 |       } | 
 |     } | 
 |  | 
 |     #region Additional test attributes | 
 |     // You can use the following additional attributes as you write your tests: | 
 |     // Use ClassInitialize to run code before running the first test in the class | 
 |     [ClassInitialize()] | 
 |     public static void MyClassInitialize(TestContext testContext) | 
 |     { | 
 |       if (!Directory.Exists("Test")) | 
 |       { | 
 |           Directory.CreateDirectory(string.Format("Test")); | 
 |       } | 
 |  | 
 |       _pck = new ExcelPackage(new FileInfo(@"Test\ConditionalFormatting.xlsx")); | 
 |     } | 
 |  | 
 |     // Use ClassCleanup to run code after all tests in a class have run | 
 |     [ClassCleanup()] | 
 |     public static void MyClassCleanup() | 
 |     { | 
 |         _pck = null; | 
 |     } | 
 |  | 
 |     // //Use TestInitialize to run code before running each test  | 
 |     // [TestInitialize()] | 
 |     // public void MyTestInitialize()  | 
 |     // { | 
 |     // } | 
 |  | 
 |     //// Use TestCleanup to run code after each test has run | 
 |     // [TestCleanup()] | 
 |     // public void MyTestCleanup()  | 
 |     // { | 
 |     // } | 
 |     #endregion | 
 |  | 
 |     /// <summary> | 
 |     ///  | 
 |     /// </summary> | 
 |     [TestMethod] | 
 |     public void TwoColorScale() | 
 |     { | 
 |       var ws = _pck.Workbook.Worksheets.Add("ColorScale"); | 
 |       ws.ConditionalFormatting.AddTwoColorScale(ws.Cells["A1:A5"]); | 
 |       ws.SetValue(1, 1, 1); | 
 |       ws.SetValue(2, 1, 2); | 
 |       ws.SetValue(3, 1, 3); | 
 |       ws.SetValue(4, 1, 4); | 
 |       ws.SetValue(5, 1, 5);       | 
 |     } | 
 |  | 
 |     /// <summary> | 
 |     ///  | 
 |     /// </summary> | 
 |     [TestMethod] | 
 |     [Ignore] | 
 |     public void ReadConditionalFormatting() | 
 |     { | 
 |       var pck = new ExcelPackage(new FileInfo(@"c:\temp\cf.xlsx")); | 
 |  | 
 |       var ws = pck.Workbook.Worksheets[1]; | 
 |       Assert.IsTrue(ws.ConditionalFormatting.Count == 6); | 
 |       Assert.IsTrue(ws.ConditionalFormatting[0].Type==eExcelConditionalFormattingRuleType.DataBar); | 
 |  | 
 |       var cf1 = ws.ConditionalFormatting.AddEqual(ws.Cells["C3"]); | 
 |       //cf1.Formula = "TRUE"; | 
 |       var cf2 = ws.Cells["C8:C12"].ConditionalFormatting.AddExpression(); | 
 |       var cf3 = ws.Cells["d12:D22,H12:H22"].ConditionalFormatting.AddFourIconSet(eExcelconditionalFormatting4IconsSetType.RedToBlack); | 
 |       pck.SaveAs(new FileInfo(@"c:\temp\cf2.xlsx")); | 
 |     } | 
 |     /// <summary> | 
 |     ///  | 
 |     /// </summary> | 
 |     [TestMethod] | 
 |     [Ignore] | 
 |     public void ReadConditionalFormattingError() | 
 |     { | 
 |       var pck = new ExcelPackage(new FileInfo(@"c:\temp\CofCTemplate.xlsx")); | 
 |  | 
 |       var ws = pck.Workbook.Worksheets[1]; | 
 |       pck.SaveAs(new FileInfo(@"c:\temp\cf2.xlsx")); | 
 |     } | 
 |     /// <summary> | 
 |     ///  | 
 |     /// </summary> | 
 |     [TestMethod] | 
 |     public void TwoBackColor() | 
 |     { | 
 |         var ws = _pck.Workbook.Worksheets.Add("TwoBackColor"); | 
 |         IExcelConditionalFormattingEqual condition1 = ws.ConditionalFormatting.AddEqual(ws.Cells["A1"]); | 
 |         condition1.StopIfTrue = true; | 
 |         condition1.Priority = 1; | 
 |         condition1.Formula = "TRUE"; | 
 |         condition1.Style.Fill.BackgroundColor.Color = Color.Green; | 
 |         IExcelConditionalFormattingEqual condition2 = ws.ConditionalFormatting.AddEqual(ws.Cells["A2"]); | 
 |         condition2.StopIfTrue = true; | 
 |         condition2.Priority = 2; | 
 |         condition2.Formula = "FALSE"; | 
 |         condition2.Style.Fill.BackgroundColor.Color = Color.Red; | 
 |     } | 
 |     [TestMethod] | 
 |     public void Databar() | 
 |     { | 
 |         var ws = _pck.Workbook.Worksheets.Add("Databar"); | 
 |         var cf = ws.ConditionalFormatting.AddDatabar(ws.Cells["A1:A5"], Color.BlueViolet); | 
 |         ws.SetValue(1, 1, 1); | 
 |         ws.SetValue(2, 1, 2); | 
 |         ws.SetValue(3, 1, 3); | 
 |         ws.SetValue(4, 1, 4); | 
 |         ws.SetValue(5, 1, 5); | 
 |     } | 
 |     [TestMethod] | 
 |     public void IconSet() | 
 |     { | 
 |         var ws = _pck.Workbook.Worksheets.Add("IconSet"); | 
 |         var cf = ws.ConditionalFormatting.AddThreeIconSet(ws.Cells["A1:A3"], eExcelconditionalFormatting3IconsSetType.Symbols); | 
 |         ws.SetValue(1, 1, 1); | 
 |         ws.SetValue(2, 1, 2); | 
 |         ws.SetValue(3, 1, 3); | 
 |  | 
 |         var cf4 = ws.ConditionalFormatting.AddFourIconSet(ws.Cells["B1:B4"], eExcelconditionalFormatting4IconsSetType.Rating); | 
 |         cf4.Icon1.Type = eExcelConditionalFormattingValueObjectType.Formula; | 
 |         cf4.Icon1.Formula = "0"; | 
 |         cf4.Icon2.Type = eExcelConditionalFormattingValueObjectType.Formula; | 
 |         cf4.Icon2.Formula = "1/3"; | 
 |         cf4.Icon3.Type = eExcelConditionalFormattingValueObjectType.Formula; | 
 |         cf4.Icon3.Formula = "2/3"; | 
 |         ws.SetValue(1, 2, 1); | 
 |         ws.SetValue(2, 2, 2); | 
 |         ws.SetValue(3, 2, 3); | 
 |         ws.SetValue(4, 2, 4); | 
 |  | 
 |         var cf5 = ws.ConditionalFormatting.AddFiveIconSet(ws.Cells["C1:C5"],eExcelconditionalFormatting5IconsSetType.Quarters); | 
 |         cf5.Icon1.Type = eExcelConditionalFormattingValueObjectType.Num; | 
 |         cf5.Icon1.Value = 1; | 
 |         cf5.Icon2.Type = eExcelConditionalFormattingValueObjectType.Num; | 
 |         cf5.Icon2.Value = 2; | 
 |         cf5.Icon3.Type = eExcelConditionalFormattingValueObjectType.Num; | 
 |         cf5.Icon3.Value = 3; | 
 |         cf5.Icon4.Type = eExcelConditionalFormattingValueObjectType.Num; | 
 |         cf5.Icon4.Value = 4; | 
 |         cf5.Icon5.Type = eExcelConditionalFormattingValueObjectType.Num; | 
 |         cf5.Icon5.Value = 5; | 
 |         cf5.ShowValue = false; | 
 |         cf5.Reverse = true; | 
 |  | 
 |         ws.SetValue(1, 3, 1); | 
 |         ws.SetValue(2, 3, 2); | 
 |         ws.SetValue(3, 3, 3); | 
 |         ws.SetValue(4, 3, 4); | 
 |         ws.SetValue(5, 3, 5);     | 
 |     } | 
 |   } | 
 | } |