The AutoFilter class represents the filter that is applied to a selected area of cells in a worksheet.

public sealed class AutoFilter

Public NotInheritable Class AutoFilter

To return an AutoFilter object, use Worksheet.AutoFilter.

There is only one auto filter per worksheet; by default, the filter is not set and AutoFilter.Area will return null.

When applying an auto filter to a select area of cells on a worksheet, bear in mind:

  1. AutoFilter.Area must be set to an Area object on the same worksheet as the auto filter.
  2. There is only one auto filter per worksheet. If AutoFilter.Area is already set, changing AutoFilter.Area will overwrite the previous area and the auto filter will be applied to the new area.
  3. AutoFilter.Area must include all of the cells that the filter applies to. ExcelWriter will not automatically detect the boundaries of the filtered area.

The filter will be removed from the worksheet either by calling the filter's Clear() method, by setting the Area property to null, or by deleting all the rows (or just the first row that has the filter headers) or all the columns of the filter from the worksheet.

ExcelApplication xla = new ExcelApplication();
Workbook wb = xla.Create(ExcelApplication.FileFormat.Xlsx);
AutoFilter autoFilter = wb.Worksheets[0].AutoFilter;

Dim xla As New ExcelApplication()
Dim wb As Workbook = xla.Create(ExcelApplication.FileFormat.Xlsx)
Dim autoFilter As AutoFilter = wb.Worksheets(0).AutoFilter

An exception of type ArgumentException will be thrown if the AutoFilter.Area property is set to an area that is on a different worksheet, or an empty area that doesn't have any data in it.