diff --git a/src/EPPlus/Core/Worksheet/WorksheetCopyHelper.cs b/src/EPPlus/Core/Worksheet/WorksheetCopyHelper.cs index 86904d2b8..947e1f625 100644 --- a/src/EPPlus/Core/Worksheet/WorksheetCopyHelper.cs +++ b/src/EPPlus/Core/Worksheet/WorksheetCopyHelper.cs @@ -107,12 +107,6 @@ internal static ExcelWorksheet Copy(ExcelWorksheets targetWorksheets, string nam CopyPivotTable(sourceWorksheet, targetWorksheet); } - //Copy dfx styles used in conditional formatting. - if (!(sourceWorksheet.Workbook == targetWorksheet.Workbook)) - { - CopyDxfStyles(sourceWorksheet, targetWorksheet); - } - if (sourceWorksheet.Names.Count > 0) { CopySheetNames(sourceWorksheet, targetWorksheet); @@ -132,6 +126,12 @@ internal static ExcelWorksheet Copy(ExcelWorksheets targetWorksheets, string nam } } + //Copy dfx styles used in conditional formatting. + if (!(sourceWorksheet.Workbook == targetWorksheet.Workbook)) + { + CopyDxfStyles(sourceWorksheet, targetWorksheet); + } + //Copy the VBA code if (pck.Workbook.VbaProject == null) diff --git a/src/EPPlusTest/ConditionalFormatting/ConditionalFormattingTests.cs b/src/EPPlusTest/ConditionalFormatting/ConditionalFormattingTests.cs index 13a30e0ee..a42d8ddae 100644 --- a/src/EPPlusTest/ConditionalFormatting/ConditionalFormattingTests.cs +++ b/src/EPPlusTest/ConditionalFormatting/ConditionalFormattingTests.cs @@ -2240,7 +2240,7 @@ public void MultipleConditionalFormattingRangesShouldBeReadCorrectlyAfterSave() var sheet = p2.Workbook.Worksheets[0]; SaveWorkbook("cf_severalCFReadSave2.xlsx", p2); - using(var p3 = new ExcelPackage(p2.Stream)) + using (var p3 = new ExcelPackage(p2.Stream)) { var sheet2 = p3.Workbook.Worksheets[0]; Assert.AreEqual(2, sheet2.ConditionalFormatting.Count); @@ -2262,5 +2262,62 @@ protected static void SaveAndCleanup(ExcelPackage pck, bool disposePackage = tru pck.Dispose(); } } + + [TestMethod] + public void CopyingDxfs() + { + using (var p = OpenPackage("CF_DxfStyleCopying.xlsx", true)) + { + var ws = p.Workbook.Worksheets.Add("SomeWorksheet"); + + ws.Cells["A1:A5"].Formula = "ROW()+5"; + + var cf = ws.Cells["A1:A5"].ConditionalFormatting.AddBetween(); + cf.Formula = "8"; + cf.Formula2 = "11"; + + cf.Style.Fill.PatternType = ExcelFillStyle.Solid; + cf.Style.Fill.BackgroundColor.Color = Color.RoyalBlue; + + cf.Style.Fill.BackgroundColor.Color = Color.RoyalBlue; + using (var p2 = OpenPackage("CF_DxfStyleCopyingWithCopies.xlsx", true)) + { + p2.Workbook.Worksheets.Add("Sheet1", ws); + SaveAndCleanup(p2); + } + SaveAndCleanup(p); + } + } + + [TestMethod] + public void CopyingDxfsSaveBetween() + { + using (var p = OpenPackage("CF_DxfStyleCopying_SaveBetween.xlsx", true)) + { + var ws = p.Workbook.Worksheets.Add("SomeWorksheet"); + + ws.Cells["A1:A5"].Formula = "ROW()+5"; + + var cf = ws.Cells["A1:A5"].ConditionalFormatting.AddBetween(); + cf.Formula = "8"; + cf.Formula2 = "11"; + + cf.Style.Fill.PatternType = ExcelFillStyle.Solid; + cf.Style.Fill.BackgroundColor.Color = Color.RoyalBlue; + SaveAndCleanup(p); + } + + + using (var p2 = OpenPackage("CF_DxfStyleCopyingWithCopies_SaveBetween.xlsx", true)) + { + using (var p = OpenPackage("CF_DxfStyleCopying_SaveBetween.xlsx", false)) + { + var ws = p.Workbook.Worksheets[0]; + p2.Workbook.Worksheets.Add("Sheet1", ws); + } + + SaveAndCleanup(p2); + } + } } } \ No newline at end of file