diff --git a/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/Excel/Cells/XLCell.cs index 8b05502..5989dd5 100644 --- a/ClosedXML/Excel/Cells/XLCell.cs +++ b/ClosedXML/Excel/Cells/XLCell.cs @@ -2243,7 +2243,7 @@ var conditionalFormats = source.Worksheet.ConditionalFormats.Where(c => c.Range.Contains(source)).ToList(); foreach (var cf in conditionalFormats) { - var c = new XLConditionalFormat(cf as XLConditionalFormat) { Range = AsRange() }; + var c = new XLConditionalFormat(cf as XLConditionalFormat, AsRange()); var oldValues = c.Values.Values.ToList(); c.Values.Clear(); foreach (var v in oldValues) diff --git a/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs b/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs index 1e4cdb5..e55ec35 100644 --- a/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs +++ b/ClosedXML/Excel/ConditionalFormats/XLConditionalFormat.cs @@ -116,10 +116,10 @@ } - public XLConditionalFormat(XLConditionalFormat conditionalFormat) + public XLConditionalFormat(XLConditionalFormat conditionalFormat, IXLRange targetRange) { + Range = targetRange; Id = Guid.NewGuid(); - Range = conditionalFormat.Range; Style = new XLStyle(this, conditionalFormat.Style); Values = new XLDictionary(conditionalFormat.Values); Colors = new XLDictionary(conditionalFormat.Colors); diff --git a/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML_Tests/ClosedXML_Tests.csproj index 2555467..f7a92c2 100644 --- a/ClosedXML_Tests/ClosedXML_Tests.csproj +++ b/ClosedXML_Tests/ClosedXML_Tests.csproj @@ -88,6 +88,7 @@ + diff --git a/ClosedXML_Tests/Excel/ConditionalFormats/ConditionalFormatCopyTests.cs b/ClosedXML_Tests/Excel/ConditionalFormats/ConditionalFormatCopyTests.cs new file mode 100644 index 0000000..4114bcd --- /dev/null +++ b/ClosedXML_Tests/Excel/ConditionalFormats/ConditionalFormatCopyTests.cs @@ -0,0 +1,26 @@ +using System.Linq; +using ClosedXML.Excel; +using NUnit.Framework; + +namespace ClosedXML_Tests.Excel.ConditionalFormats +{ + [TestFixture] + public class ConditionalFormatCopyTests + { + [Test] + public void StylesAreCreatedDuringCopy() + { + var wb = new XLWorkbook(); + var ws = wb.Worksheets.Add("Sheet"); + var format = ws.Range("A1:A1").AddConditionalFormat(); + format.WhenEquals("=" + format.Range.FirstCell().CellRight(4).Address.ToStringRelative()).Fill + .SetBackgroundColor(XLColor.Blue); + + var wb2 = new XLWorkbook(); + var ws2 = wb2.Worksheets.Add("Sheet2"); + ws2.FirstCell().CopyFrom(ws.FirstCell()); + Assert.That(ws2.ConditionalFormats.First().Style.Fill.BackgroundColor, Is.EqualTo(XLColor.Blue)); //Added blue style + + } + } +}