C#在多个值上过滤excel列

时间:2013-03-12 08:03:17

标签: c# .net winforms export-to-excel

我使用C#将数据表导出到基于Windows窗体的应用程序中的excel。 FilterList具有以下值

string[] FilterList = new string[] {"Red", "Blue"};

但我只得到“Blue”过滤的值。下面是我在我的一个列上应用过滤器的部分代码。我尝试过滤的列中有7个不同的值,我只想从中选择2个。

Microsoft.Office.Interop.Excel.Application app = new
Microsoft.Office.Interop.Excel.Application();   
        app.Visible = false;

        Workbook wb = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);   
        Worksheet ws = (Worksheet)wb.ActiveSheet;

       // Some business logic to fill the excel.............

        Range firstRow = (Excel.Range)ws.Rows[1];
        firstRow.Activate();
        firstRow.Select();
        firstRow.AutoFilter(5, FilterList.Count > 0 ? FilterList :
        Type.Missing,Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);

我在这里做错了什么,任何帮助

1 个答案:

答案 0 :(得分:4)

好的,你走了:

Range的Autofilter方法的第3个参数接受XlAutoFilterOperator,我将其更改为xlFilterValues而不是xlAnd,因为我使用单个条件对象但具有多个条件。下面是我为使过滤器选择2个值所做的代码更改。

Range.AutoFilter(5, FilterList.Count > 0 ? FilterList.ToArray() : Type.Missing,
Excel.XlAutoFilterOperator.xlFilterValues, Type.Missing, true);

来源:SocialMSDN

希望它可以帮助其他SO用户。