Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c#在两个单独的列中按三个条件筛选excel范围_C#_Excel_Autofilter - Fatal编程技术网

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

使用c#在两个单独的列中按三个条件筛选excel范围,c#,excel,autofilter,C#,Excel,Autofilter,我在两列中按三个不同的标准筛选excel范围,“B”列由matFilter1和matFilter2筛选,“AC”列由MatFilter3筛选,我使用的代码是: //Filter Job Data Sheet for Material Transactions string matFilter1 = "I Job Issue"; string matFilter2 = "W Job Withdrawal"; string matFilter3 = "1";

我在两列中按三个不同的标准筛选excel范围,“B”列由matFilter1和matFilter2筛选,“AC”列由MatFilter3筛选,我使用的代码是:

    //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#新手,希望为类似这样的场景提供更干净的过滤器解决方案


提前感谢。

如果要对更多的列应用筛选器,可以将详细信息放入集合中并在其中循环,但对于只有两个列,最好保持原样。可读性很重要,只要看一眼代码,您就会立即明白过滤器应用于两列

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

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

你为什么不喜欢你现在的代码呢?我想我应该分别定义我的三个标准,用两行代码来执行自动过滤。我知道如何创建字符串数组,但我不知道如何在自动筛选函数中使用它。你为什么用C#而不是VBA来做这件事?这似乎是您希望与特定工作簿相关联的逻辑,而不是在单独的应用程序中。这是excel加载项的一部分,它通过SQL从ERP中提取数据。外接程序是用c#编写的。