C# 在Excel中新增自動篩選器並執行篩選
阿新 • • 發佈:2018-12-17
當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);
結果: