diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLAutoFilter.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLAutoFilter.cs index 75cf8f0..3e43923 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLAutoFilter.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLAutoFilter.cs @@ -90,7 +90,6 @@ } } - Enabled = true; } return this; diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLFilterColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLFilterColumn.cs index 751d646..89dafe6 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLFilterColumn.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/AutoFilters/XLFilterColumn.cs @@ -44,6 +44,7 @@ private void SetTopBottom(Int32 value, XLTopBottomType type, Boolean takeTop = true) { + _autoFilter.Enabled = true; _autoFilter.Column(_column).FilterType = XLFilterType.TopBottom; _autoFilter.Column(_column).TopBottomValue = value; _autoFilter.Column(_column).TopBottomType = type; @@ -112,6 +113,7 @@ private void ShowAverage(Boolean aboveAverage) { + _autoFilter.Enabled = true; _autoFilter.Column(_column).FilterType = XLFilterType.Dynamic; _autoFilter.Column(_column).DynamicType = aboveAverage ? XLFilterDynamicType.AboveAverage : XLFilterDynamicType.BelowAverage; var column = _autoFilter.Range.Column(_column); @@ -230,6 +232,7 @@ private IXLFilterConnector ApplyCustomFilter(T value, XLFilterOperator op, Func condition, XLFilterType filterType = XLFilterType.Custom) where T : IComparable { + _autoFilter.Enabled = true; if (filterType == XLFilterType.Custom) { Clear(); diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTable.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTable.cs index b03642e..efa0101 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTable.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTable.cs @@ -94,6 +94,15 @@ TotalsRow().Delete(); _showTotalsRow = value; + + if (_showTotalsRow) + { + AutoFilter.Range = Worksheet.Range( + RangeAddress.FirstAddress.RowNumber, RangeAddress.FirstAddress.ColumnNumber, + RangeAddress.LastAddress.RowNumber - 1, RangeAddress.LastAddress.ColumnNumber); + } + else + AutoFilter.Range = Worksheet.Range(RangeAddress); } } @@ -431,7 +440,7 @@ ShowRowStripes = true; ShowAutoFilter = true; Theme = XLTableTheme.TableStyleLight9; - AutoFilter = new XLAutoFilter(); + AutoFilter = new XLAutoFilter() { Range = AsRange() }; } private void AddToTables(XLRange range, Boolean addToTables) diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index f2b8306..010deab 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -251,7 +251,13 @@ if (tableColumn.TotalsRowLabel != null) xlTable.Field(tableColumn.Name.Value).TotalsRowLabel = tableColumn.TotalsRowLabel.Value; } + + xlTable.AutoFilter.Range = xlTable.Worksheet.Range( + xlTable.RangeAddress.FirstAddress.RowNumber, xlTable.RangeAddress.FirstAddress.ColumnNumber, + xlTable.RangeAddress.LastAddress.RowNumber - 1, xlTable.RangeAddress.LastAddress.ColumnNumber); } + else + xlTable.AutoFilter.Range = xlTable.Worksheet.Range(xlTable.RangeAddress); } #endregion diff --git a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs index 4442e38..e2a3f20 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.59.0.0")] -[assembly: AssemblyFileVersion("0.59.0.0")] +[assembly: AssemblyVersion("0.60.0.0")] +[assembly: AssemblyFileVersion("0.60.0.0")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ClosedXML_Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a1fb8ba59167fe734d64128ca73d32c45cb8a117246d09c95c8769db88fe332b0a3396bedd0ea48ee42b0e5796fec0798ca5cb628a9a6de80d35d6c67b936ca1670347b3d4f2b769c8ce2ddcf959dbac6bcd88e6c08751ea1fffa0522de3507193e7035305a8aa008d6c88cca1341b3120fa9c347ab3f97e2d772e2709277da5")] \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/AutoFilters/RegularAutoFilter.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/AutoFilters/RegularAutoFilter.cs index 9a26244..9a65eab 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/AutoFilters/RegularAutoFilter.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/AutoFilters/RegularAutoFilter.cs @@ -110,6 +110,28 @@ ws.AutoFilter.Sort(3); #endregion + #region Table + String tableSheetName = "Table"; + ws = wb.Worksheets.Add(tableSheetName); + + // Add a bunch of numbers to filter + ws.Cell("A1").SetValue("Numbers") + .CellBelow().SetValue(2) + .CellBelow().SetValue(3) + .CellBelow().SetValue(3) + .CellBelow().SetValue(5) + .CellBelow().SetValue(1) + .CellBelow().SetValue(4); + + // Add filters + var table = ws.RangeUsed().CreateTable(); + table.ShowTotalsRow = true; + table.Field(0).TotalsRowFunction = XLTotalsRowFunction.Sum; + table.AutoFilter.Column(1).AddFilter(3).AddFilter(4); + + table.AutoFilter.Sort(1); + #endregion + using (var ms = new MemoryStream()) { wb.SaveAs(ms); @@ -137,6 +159,11 @@ workbook.Worksheet(multiColumn).AutoFilter.Sort(3, XLSortOrder.Descending); #endregion + #region Table + workbook.Worksheet(tableSheetName).Table(0).AutoFilter.Column(1).AddFilter(5); + workbook.Worksheet(tableSheetName).Table(0).AutoFilter.Sort(1, XLSortOrder.Descending); + #endregion + workbook.SaveAs(filePath); ms.Close(); } diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs index f2d879b..ff5d5bb 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.59.0.0")] -[assembly: AssemblyFileVersion("0.59.0.0")] +[assembly: AssemblyVersion("0.60.0.0")] +[assembly: AssemblyFileVersion("0.60.0.0")] diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/AutoFilter/RegularAutoFilter.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/AutoFilter/RegularAutoFilter.xlsx index 8648a38..e533f3f 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/AutoFilter/RegularAutoFilter.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/AutoFilter/RegularAutoFilter.xlsx Binary files differ