使用C#进行高级Excel筛选

3

我需要在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;

我知道这段代码不起作用,但是我想在筛选参数中创建一个动态列表。有人能告诉我如何做吗?
1个回答

2

我不确定如何传递列表,但是你绝对可以传递数组:

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;

如果我想要根据>=的条件筛选列,该怎么办?所以我想要的是列值应该大于或等于listfilter数组中的一个值。你能帮我吗? - Raj
嗨@Raj。抱歉,我已经八年没碰过这段代码了!我不知道现在该怎么做。我的建议是创建你自己的问题,这样你会得到更多人的关注。 - Sid Holland
太酷了!不管怎样,谢谢Sid。 - Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接