2012-04-25 63 views
2

我需要在excel表做一个过滤器,我想知道是否有可能做这样的先进的过滤擅长用C#

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; 

我知道这个代码不工作,但我的过滤器想在过滤参数中做一个动态列表。 有人能告诉我我该怎么做?

回答

0

我不知道关于通过列表,但你绝对可以传递数组:

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

您可以找到XlAutoFilterOperatorhere的不同成员。

它也可能是一个主意,试图找到在表中最后使用的行,而不是设置过滤器对整个列可能会慢下来一点:

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;