diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/IXLConditionalFormat.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/IXLConditionalFormat.cs index 9c67c00..6f91940 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/IXLConditionalFormat.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/IXLConditionalFormat.cs @@ -73,14 +73,24 @@ IXLStyle WhenNotContains(String value); IXLStyle WhenStartsWith(String value); IXLStyle WhenEndsWith(String value); - IXLStyle WhenEqualTo(String value); - IXLStyle WhenNotEqualTo(String value); + IXLStyle WhenEquals(String value); + IXLStyle WhenNotEquals(String value); IXLStyle WhenGreaterThan(String value); IXLStyle WhenLessThan(String value); IXLStyle WhenEqualOrGreaterThan(String value); IXLStyle WhenEqualOrLessThan(String value); IXLStyle WhenBetween(String minValue, String maxValue); IXLStyle WhenNotBetween(String minValue, String maxValue); + + IXLStyle WhenEquals(Double value); + IXLStyle WhenNotEquals(Double value); + IXLStyle WhenGreaterThan(Double value); + IXLStyle WhenLessThan(Double value); + IXLStyle WhenEqualOrGreaterThan(Double value); + IXLStyle WhenEqualOrLessThan(Double value); + IXLStyle WhenBetween(Double minValue, Double maxValue); + IXLStyle WhenNotBetween(Double minValue, Double maxValue); + IXLStyle WhenIsDuplicate(); IXLStyle WhenIsUnique(); IXLStyle WhenIsTrue(String formula); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/Save/XLCFCellIsConverter.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/Save/XLCFCellIsConverter.cs index e0e14be..0199071 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/Save/XLCFCellIsConverter.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/Save/XLCFCellIsConverter.cs @@ -10,19 +10,19 @@ { public ConditionalFormattingRule Convert(IXLConditionalFormat cf, int priority, XLWorkbook.SaveContext context) { - String val = cf.Values[1].Replace("\"", "\"\""); + String val = cf.Values[1];//.Replace("\"", "\"\""); var conditionalFormattingRule = new ConditionalFormattingRule { FormatId = (UInt32)context.DifferentialFormats[cf.Style], Operator = cf.Operator.ToOpenXml(), Type = cf.ConditionalFormatType.ToOpenXml(), Priority = priority }; var formula = new Formula(); if (cf.Operator == XLCFOperator.Equal || cf.Operator == XLCFOperator.NotEqual) - formula.Text = "\"" + val + "\""; + formula.Text = val; else formula.Text = val; conditionalFormattingRule.Append(formula); if(cf.Operator == XLCFOperator.Between || cf.Operator == XLCFOperator.NotBetween) { - var formula2 = new Formula {Text = cf.Values[2].Replace("\"", "\"\"")}; + var formula2 = new Formula { Text = cf.Values[2] };//.Replace("\"", "\"\"")}; conditionalFormattingRule.Append(formula2); } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs index 8fc65e2..47aef53 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs @@ -150,64 +150,130 @@ Operator = XLCFOperator.EndsWith; return Style; } - public IXLStyle WhenEqualTo(String value) + + private String GetProperValue(String value) { - Values.Initialize(value); + return String.Format("\"{0}\"", value.Replace("\"", "\"\"")); + } + + public IXLStyle WhenEquals(String value) + { + Values.Initialize(GetProperValue(value)); Operator = XLCFOperator.Equal; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } - public IXLStyle WhenNotEqualTo(String value) + public IXLStyle WhenNotEquals(String value) { - Values.Initialize(value); + Values.Initialize(GetProperValue(value)); Operator = XLCFOperator.NotEqual; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } public IXLStyle WhenGreaterThan(String value) { - Values.Initialize(value); + Values.Initialize(GetProperValue(value)); Operator = XLCFOperator.GreaterThan; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } public IXLStyle WhenLessThan(String value) { - Values.Initialize(value); + Values.Initialize(GetProperValue(value)); Operator = XLCFOperator.LessThan; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } public IXLStyle WhenEqualOrGreaterThan(String value) { - Values.Initialize(value); + Values.Initialize(GetProperValue(value)); Operator = XLCFOperator.EqualOrGreaterThan; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } public IXLStyle WhenEqualOrLessThan(String value) { - Values.Initialize(value); + Values.Initialize(GetProperValue(value)); Operator = XLCFOperator.EqualOrLessThan; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } public IXLStyle WhenBetween(String minValue, String maxValue) { - Values.Initialize(minValue); - Values.Add(maxValue); + Values.Initialize(GetProperValue(minValue)); + Values.Add(GetProperValue(maxValue)); Operator = XLCFOperator.Between; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } public IXLStyle WhenNotBetween(String minValue, String maxValue) { - Values.Initialize(minValue); - Values.Add(maxValue); + Values.Initialize(GetProperValue(minValue)); + Values.Add(GetProperValue(maxValue)); Operator = XLCFOperator.NotBetween; ConditionalFormatType = XLConditionalFormatType.CellIs; return Style; } + + public IXLStyle WhenEquals(Double value) + { + Values.Initialize(value.ToString()); + Operator = XLCFOperator.Equal; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenNotEquals(Double value) + { + Values.Initialize(value.ToString()); + Operator = XLCFOperator.NotEqual; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenGreaterThan(Double value) + { + Values.Initialize(value.ToString()); + Operator = XLCFOperator.GreaterThan; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenLessThan(Double value) + { + Values.Initialize(value.ToString()); + Operator = XLCFOperator.LessThan; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenEqualOrGreaterThan(Double value) + { + Values.Initialize(value.ToString()); + Operator = XLCFOperator.EqualOrGreaterThan; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenEqualOrLessThan(Double value) + { + Values.Initialize(value.ToString()); + Operator = XLCFOperator.EqualOrLessThan; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenBetween(Double minValue, Double maxValue) + { + Values.Initialize(minValue.ToString()); + Values.Add(maxValue.ToString()); + Operator = XLCFOperator.Between; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenNotBetween(Double minValue, Double maxValue) + { + Values.Initialize(minValue.ToString()); + Values.Add(maxValue.ToString()); + Operator = XLCFOperator.NotBetween; + ConditionalFormatType = XLConditionalFormatType.CellIs; + return Style; + } + public IXLStyle WhenIsDuplicate() { ConditionalFormatType = XLConditionalFormatType.IsDuplicate; diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs index a08f49c..2b2aa55 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -1876,5 +1876,17 @@ return cf; } } + + + internal IXLConditionalFormat AddConditionalFormat(IXLConditionalFormat source) + { + using (var asRange = AsRange()) + { + var cf = new XLConditionalFormat(asRange); + cf.CopyFrom(source); + Worksheet.ConditionalFormats.Add(cf); + return cf; + } + } } } \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStylizedEmpty.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStylizedEmpty.cs index 9e059f9..10aff35 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStylizedEmpty.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/XLStylizedEmpty.cs @@ -9,7 +9,7 @@ { public XLStylizedEmpty(IXLStyle defaultStyle) { - Style = defaultStyle; + Style = new XLStyle(this, defaultStyle); } public IXLStyle Style { get; set; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index a4b7dba..3844c2d 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -1336,9 +1336,10 @@ { if (formula.Text != null && conditionalFormat.ConditionalFormatType == XLConditionalFormatType.CellIs) { - String val = formula.Text; - if (val.StartsWith("\"")) val = val.Substring(1, val.Length - 2); - conditionalFormat.Values.Add(val); + String val = formula.Text.Replace("\"\"", "\""); + //if (val.StartsWith("\"")) val = val.Substring(1, val.Length - 2); + + conditionalFormat.Values.Add(val); } } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index 6dd02fa..5939efc 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -1145,6 +1145,34 @@ Workbook.Worksheets.ForEach(ws => MoveNamedRangesColumns(range, columnsShifted, ws.NamedRanges)); MoveNamedRangesColumns(range, columnsShifted, Workbook.NamedRanges); + ShiftConditionalFormattingColumns(range, columnsShifted); + } + private void ShiftConditionalFormattingColumns(XLRange range, int columnsShifted) + { + Int32 firstColumn = range.RangeAddress.FirstAddress.ColumnNumber - columnsShifted + 1; + if (firstColumn <= 1) return; + + Int32 lastColumn = range.RangeAddress.LastAddress.ColumnNumber - columnsShifted + 1; + Int32 firstRow = range.RangeAddress.FirstAddress.RowNumber; + Int32 lastRow = range.RangeAddress.LastAddress.RowNumber; + var insertedRange = Range(firstRow, firstColumn, lastRow, lastColumn); + var fc = insertedRange.FirstColumn(); + var model = fc.ColumnLeft(); + Int32 modelFirstRow = model.RangeAddress.FirstAddress.RowNumber; + if (ConditionalFormats.Any(cf => cf.Range.Intersects(model))) + { + for (Int32 ro = firstRow; ro <= lastRow; ro++) + { + var cellModel = model.Cell(ro - modelFirstRow + 1); + foreach (var cf in ConditionalFormats.Where(cf => cf.Range.Intersects(cellModel.AsRange())).ToList()) + { + Range(ro, firstColumn, ro, lastColumn).AddConditionalFormat(cf); + } + } + } + insertedRange.Dispose(); + model.Dispose(); + fc.Dispose(); } private void WorksheetRangeShiftedRows(XLRange range, int rowsShifted) @@ -1171,7 +1199,34 @@ Workbook.Worksheets.ForEach(ws => MoveNamedRangesRows(range, rowsShifted, ws.NamedRanges)); MoveNamedRangesRows(range, rowsShifted, Workbook.NamedRanges); + ShiftConditionalFormattingRows(range, rowsShifted); + } + private void ShiftConditionalFormattingRows(XLRange range, int rowsShifted) + { + Int32 firstRow = range.RangeAddress.FirstAddress.RowNumber - rowsShifted + 1; + if (firstRow <= 1) return; + Int32 lastRow = range.RangeAddress.LastAddress.RowNumber - rowsShifted + 1; + Int32 firstColumn = range.RangeAddress.FirstAddress.ColumnNumber; + Int32 lastColumn = range.RangeAddress.LastAddress.ColumnNumber; + var insertedRange = Range(firstRow, firstColumn, lastRow, lastColumn); + var fr = insertedRange.FirstRow(); + var model = fr.RowAbove(); + Int32 modelFirstColumn = model.RangeAddress.FirstAddress.ColumnNumber; + if (ConditionalFormats.Any(cf=>cf.Range.Intersects(model))) + { + for (Int32 co = firstColumn; co <= lastColumn; co++) + { + var cellModel = model.Cell(co - modelFirstColumn + 1); + foreach (var cf in ConditionalFormats.Where(cf => cf.Range.Intersects(cellModel.AsRange())).ToList()) + { + Range(firstRow, co, lastRow, co).AddConditionalFormat(cf); + } + } + } + insertedRange.Dispose(); + model.Dispose(); + fr.Dispose(); } internal void BreakConditionalFormatsIntoCells() diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/ConditionalFormatting/ConditionalFormatting.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/ConditionalFormatting/ConditionalFormatting.cs index 22bd5de..ee5332d 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/ConditionalFormatting/ConditionalFormatting.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/ConditionalFormatting/ConditionalFormatting.cs @@ -202,7 +202,7 @@ } - public class CFEquals : IXLExample + public class CFEqualsString : IXLExample { public void Create(String filePath) { @@ -214,14 +214,33 @@ .CellBelow().SetValue("Hell") .CellBelow().SetValue("Holl"); - ws.RangeUsed().AddConditionalFormat().WhenEqualTo("Hell") + ws.RangeUsed().AddConditionalFormat().WhenEquals("Hell") .Fill.SetBackgroundColor(XLColor.Red); workbook.SaveAs(filePath); } } - public class CFNotEquals : IXLExample + public class CFEqualsNumber : IXLExample + { + public void Create(String filePath) + { + var workbook = new XLWorkbook(); + var ws = workbook.AddWorksheet("Sheet1"); + + ws.FirstCell().SetValue(1) + .CellBelow().SetValue(1) + .CellBelow().SetValue(2) + .CellBelow().SetValue(3); + + ws.RangeUsed().AddConditionalFormat().WhenEquals(2) + .Fill.SetBackgroundColor(XLColor.Red); + + workbook.SaveAs(filePath); + } + } + + public class CFNotEqualsString : IXLExample { public void Create(String filePath) { @@ -233,7 +252,26 @@ .CellBelow().SetValue("Hell") .CellBelow().SetValue("Holl"); - ws.RangeUsed().AddConditionalFormat().WhenNotEqualTo("Hell") + ws.RangeUsed().AddConditionalFormat().WhenNotEquals("Hell") + .Fill.SetBackgroundColor(XLColor.Red); + + workbook.SaveAs(filePath); + } + } + + public class CFNotEqualsNumber : IXLExample + { + public void Create(String filePath) + { + var workbook = new XLWorkbook(); + var ws = workbook.AddWorksheet("Sheet1"); + + ws.FirstCell().SetValue(1) + .CellBelow().SetValue(1) + .CellBelow().SetValue(2) + .CellBelow().SetValue(3); + + ws.RangeUsed().AddConditionalFormat().WhenNotEquals(2) .Fill.SetBackgroundColor(XLColor.Red); workbook.SaveAs(filePath); @@ -527,7 +565,7 @@ .CellRight().SetValue(3); var range = ws.RangeUsed(); - range.AddConditionalFormat().WhenEqualTo("1").Font.SetBold(); + range.AddConditionalFormat().WhenEquals("1").Font.SetBold(); range.InsertRowsAbove(1); @@ -547,8 +585,8 @@ .CellRight().SetValue("2") .CellRight().SetValue("3"); - ws.RangeUsed().AddConditionalFormat().WhenEqualTo("1").Fill.SetBackgroundColor(XLColor.Red); - ws.Range("B2:C2").InsertRowsAbove(1); + ws.RangeUsed().AddConditionalFormat().WhenEquals("1").Fill.SetBackgroundColor(XLColor.Red); + ws.Range("B2:C2").InsertRowsBelow(1); workbook.SaveAs(filePath); } diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj index 9212f82..2f53574 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj @@ -69,6 +69,7 @@ + @@ -215,6 +216,20 @@ + + + + + + + + + + + + + + diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Examples/ConditionalFormattingTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Examples/ConditionalFormattingTests.cs new file mode 100644 index 0000000..bf4eb6f --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Examples/ConditionalFormattingTests.cs @@ -0,0 +1,130 @@ +using ClosedXML_Examples; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace ClosedXML_Tests.Examples +{ + [TestClass] + public class ConditionalFormattingTests + { + + [TestMethod] + public void CFColorScaleLowMidHigh() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFColorScaleLowMidHigh.xlsx"); + } + + [TestMethod] + public void CFColorScaleLowHigh() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFColorScaleLowHigh.xlsx"); + } + + [TestMethod] + public void CFStartsWith() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFStartsWith.xlsx"); + } + + [TestMethod] + public void CFEndsWith() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFEndsWith.xlsx"); + } + + [TestMethod] + public void CFIsBlank() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFIsBlank.xlsx"); + } + + [TestMethod] + public void CFNotBlank() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFNotBlank.xlsx"); + } + + [TestMethod] + public void CFIsError() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFIsError.xlsx"); + } + + [TestMethod] + public void CFNotError() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFNotError.xlsx"); + } + + [TestMethod] + public void CFContains() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFContains.xlsx"); + } + + [TestMethod] + public void CFNotContains() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFNotContains.xlsx"); + } + + [TestMethod] + public void CFEqualsString() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFEqualsString.xlsx"); + } + + [TestMethod] + public void CFEqualsNumber() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFEqualsNumber.xlsx"); + } + + [TestMethod] + public void CFNotEqualsString() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFNotEqualsString.xlsx"); + } + + [TestMethod] + public void CFNotEqualsNumber() + { + TestHelper.RunTestExample(@"ConditionalFormatting\CFNotEqualsNumber.xlsx"); + } + + //[TestMethod] + //public void XXX() + //{ + // TestHelper.RunTestExample(@"ConditionalFormatting\XXX.xlsx"); + //} + // + //[TestMethod] + //public void XXX() + //{ + // TestHelper.RunTestExample(@"ConditionalFormatting\XXX.xlsx"); + //} + // + //[TestMethod] + //public void XXX() + //{ + // TestHelper.RunTestExample(@"ConditionalFormatting\XXX.xlsx"); + //} + // + //[TestMethod] + //public void XXX() + //{ + // TestHelper.RunTestExample(@"ConditionalFormatting\XXX.xlsx"); + //} + // + //[TestMethod] + //public void XXX() + //{ + // TestHelper.RunTestExample(@"ConditionalFormatting\XXX.xlsx"); + //} + // + //[TestMethod] + //public void XXX() + //{ + // TestHelper.RunTestExample(@"ConditionalFormatting\XXX.xlsx"); + //} + } +} \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx new file mode 100644 index 0000000..07a1b95 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowHigh.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx new file mode 100644 index 0000000..4c148d2 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFColorScaleLowMidHigh.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFContains.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFContains.xlsx new file mode 100644 index 0000000..73175c2 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFContains.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEndsWith.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEndsWith.xlsx new file mode 100644 index 0000000..f6fd80f --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEndsWith.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEqualsNumber.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEqualsNumber.xlsx new file mode 100644 index 0000000..15a0978 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEqualsNumber.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEqualsString.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEqualsString.xlsx new file mode 100644 index 0000000..3c92dfc --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFEqualsString.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIsBlank.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIsBlank.xlsx new file mode 100644 index 0000000..eacac5b --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIsBlank.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIsError.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIsError.xlsx new file mode 100644 index 0000000..108c9fa --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFIsError.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotBlank.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotBlank.xlsx new file mode 100644 index 0000000..a4d867a --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotBlank.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotContains.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotContains.xlsx new file mode 100644 index 0000000..3fbc4b8 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotContains.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotEqualsNumber.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotEqualsNumber.xlsx new file mode 100644 index 0000000..ae6ac79 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotEqualsNumber.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotEqualsString.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotEqualsString.xlsx new file mode 100644 index 0000000..a1c4357 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotEqualsString.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotError.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotError.xlsx new file mode 100644 index 0000000..26de661 --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFNotError.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFStartsWith.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFStartsWith.xlsx new file mode 100644 index 0000000..9ec534f --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/ConditionalFormatting/CFStartsWith.xlsx Binary files differ