高级筛选器 Excel 与 C#

本文关键字:Excel 筛选 高级 | 更新日期: 2023-09-27 18:32:08

我需要在 excel 工作表中做一个过滤器,我想知道是否可以做这样的过滤器

 List<string> listFilter = new List<string>();
            listFilter.Add("3");
            listFilter.Add("4");
            object _missing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Range oRng1 = xlWorkSheet.Range["A1", "A1048576"];
            oRng1.AutoFilter(1, listFilter, Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlAnd, _missing, true);
            oRng1.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;

我知道这段代码不起作用,但我想在过滤器参数中做一个 dinamic 列表。有人可以告诉我该怎么做吗?

高级筛选器 Excel 与 C#

我不确定是否传递列表,但您绝对可以传递数组:

string[] listfilter = new string[] { "2", "3", "4" };
xlWorksheet.get_Range("A1", "B50").AutoFilter(1, listfilter, Excel.XlAutoFilterOperator.xlFilterValues,
    Missing.Value, true);

您可以在此处找到XlAutoFilterOperator的不同成员。

尝试在工作表中查找上次使用的行而不是为整个列设置过滤器也可能是一个想法,因为这可能会减慢速度:

int lastRow = xlWorksheet.Range["A:A"].Find("*", Missing.Value, Missing.Value, Missing.Value,
    Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlPrevious, false, Missing.Value,
    Missing.Value).Row;