blob: fdd938341f830661d3cba580019d959144578f32 [file] [log] [blame]
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);
}
}
}