diff --git a/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/Excel/XLWorksheet.cs index 6b5348a..7e37bba 100644 --- a/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/Excel/XLWorksheet.cs @@ -651,7 +651,8 @@ } if (AutoFilter.Enabled) - targetSheet.Range(AutoFilter.Range.RangeAddress).SetAutoFilter(); + using (var range = targetSheet.Range(AutoFilter.Range.RangeAddress.FirstAddress.RowNumber, AutoFilter.Range.RangeAddress.FirstAddress.ColumnNumber, AutoFilter.Range.RangeAddress.LastAddress.RowNumber, AutoFilter.Range.RangeAddress.LastAddress.ColumnNumber)) + range.SetAutoFilter(); return targetSheet; } diff --git a/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs b/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs index da8bde2..9a4356a 100644 --- a/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs +++ b/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs @@ -1,8 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; using ClosedXML.Excel; using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; namespace ClosedXML_Tests { @@ -94,5 +95,35 @@ Assert.That(!ws.AutoFilter.Enabled); } } + + [Test] + public void CanCopyAutoFilterToNewSheetOnNewWorkbook() + { + using (var ms1 = new MemoryStream()) + using (var ms2 = new MemoryStream()) + { + using (var wb1 = new XLWorkbook()) + using (var wb2 = new XLWorkbook()) + { + var ws = wb1.Worksheets.Add("AutoFilter"); + ws.Cell("A1").Value = "Names"; + ws.Cell("A2").Value = "John"; + ws.Cell("A3").Value = "Hank"; + ws.Cell("A4").Value = "Dagny"; + + ws.RangeUsed().SetAutoFilter(); + + wb1.SaveAs(ms1); + + ws.CopyTo(wb2, ws.Name); + wb2.SaveAs(ms2); + } + + using (var wb2 = new XLWorkbook(ms2)) + { + Assert.IsTrue(wb2.Worksheets.First().AutoFilter.Enabled); + } + } + } } }