使用c#在两个单独的列中按三个条件过滤excel范围

时间:2014-04-14 19:21:44

标签: c# excel autofilter

我在两列中按三个不同的标准过滤excel范围,列“B”按 matFilter1 matFilter2 过滤,列“AC”过滤 matFitler3 ,我正在使用的代码是:

    //Filter Job Data Sheet for Material Transactions
    string matFilter1 = "I Job Issue";
    string matFilter2 = "W Job Withdrawal";
    string matFilter3 = "1";
    Excel.Range jobMatRange = JobDataSheet.UsedRange; //Define range of Job Material Sheet
    jobMatRange.AutoFilter(2, matFilter1, Excel.XlAutoFilterOperator.xlOr, matFilter2, true); //Apply matFilter1 and matFilter2 to column2 in range
    jobMatRange.AutoFilter(29, matFilter3, Excel.XlAutoFilterOperator.xlOr, Type.Missing, true); //Apply matFilter3 to column29 in range

现在这很好用,我只是想知道是否有更好,更清洁的方法来做到这一点。我是c#的新手,想要为这样的场景提供更清洁的过滤器解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您将过滤器应用于更多列,您可以将详细信息放入集合中并循环遍历它,但只有两个更有意义的是保持原样。可读性非常重要,您可以立即了解该代码,并立即了解过滤器正在应用于两列。

除非在其他地方使用它们,否则您总是可以将字符串直接放在方法调用中。

jobMatRange.AutoFilter(2, "I Job Issue", Excel.XlAutoFilterOperator.xlOr, "W Job Withdrawal", true);
jobMatRange.AutoFilter(29, "1", Excel.XlAutoFilterOperator.xlOr, Type.Missing, true);