1. 程式人生 > >C# 在Excel中新增自動篩選器並執行篩選

C# 在Excel中新增自動篩選器並執行篩選

       當Excel工作表中的資料十分龐大時,我們可以在某個選定的區域內新增“文字篩選器”、“數字篩選器”、“顏色篩選器”和“日期篩選器”等,對資料進行過濾。過濾後的工作表會顯示所需資料並隱藏其餘資料。

        如下所示的工作表中,我們可以在“種類”所在的列新增文字篩選器,使工作表只顯示一類的資料;我們可以在“數量”列新增數字篩選器,讓工作表只顯示80-100之間的數字所在的行;表中偶數行有背景色,我們可以新增顏色篩選器,來顯示帶有背景色的資料;我們還可以在“日期”列新增日期篩選器,來顯示某個月份的資料。

        下面的程式碼將分別演示這幾種篩選器的新增方法。本方案需要引用

Spire.Xls.dll,在編寫程式碼前,請下載DLL檔案並新增到程式。

1. 新增文字篩選器

//建立Workbook物件
Workbook wb = new Workbook();

//載入Excel檔案
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

//獲取第一個工作表
Worksheet sheet = workbook.Worksheets[0];

//獲取AutoFilters物件
AutoFiltersCollection filters = sheet.AutoFilters;

//設定需要篩選的單元格區域
filters.Range = sheet.Range[2, 2, 16, 5];

//在所選區域的第二列新增篩選器,並設定過濾準則,即文字“C”
filters.AddFilter(1, "C");

//執行過濾
filters.Filter();

//儲存文件
wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

結果:

2. 新增數字篩選器

//建立Workbook物件
Workbook wb = new Workbook();

//載入Excel檔案
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

//獲取第一個工作表
Worksheet sheet = wb.Worksheets[0];

//獲取AutoFilters物件
AutoFiltersCollection filters = sheet.AutoFilters;

//設定需要篩選的單元格區域
filters.Range = sheet.Range[2, 2, 16, 5];

//在所選區域的第三列新增自定義的篩選器,即“大於等於80,小於等於100”直接的數字
filters.CustomFilter(2, FilterOperatorType.GreaterOrEqual, 80, true, FilterOperatorType.LessOrEqual, 100);

//執行過濾
filters.Filter();

//儲存文件
wb.SaveToFile("output.xlsx", FileFormat.Version2013);

結果:

3. 新增顏色篩選器

//建立Workbook物件
Workbook wb = new Workbook();

//載入Excel檔案
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

//獲取第一個工作表
Worksheet sheet = wb.Worksheets[0];

//獲取AutoFilters物件
AutoFiltersCollection filters = sheet.AutoFilters;

//設定需要篩選的單元格區域
filters.Range = sheet.Range[2, 2, 16, 5];

//在所選區域的第一列新增顏色篩選器,選擇的顏色了單元格B4的背景色
filters.AddFillColorFilter(0, sheet.Range["B4"].Style.Color);

//執行過濾
filters.Filter();

//儲存文件
wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

結果:

4. 新增日期篩選器

//建立Workbook物件
Workbook wb = new Workbook();

//載入Excel檔案
wb.LoadFromFile(@"C:\Users\Administrator\Desktop\data-filter.xlsx");

//獲取第一個工作表
Worksheet sheet = wb.Worksheets[0];

//獲取AutoFilters物件
AutoFiltersCollection filters = sheet.AutoFilters;

//設定需要篩選的單元格區域
filters.Range = sheet.Range[2, 2, 16, 5];


//在所選區域的第四列新增日期篩選器,以“2017年4月”作為篩選條件
filters.AddDateFilter(3, DateTimeGroupingType.Month, 2017, 4, 1, 0, 0, 0 );

//執行過濾
filters.Filter();

//儲存文件
wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

結果: