如何将Excel Interop中的AutoFilter限制为仅对一列中的行进行操作?

时间:2016-10-05 23:06:09

标签: c# excel-interop autofilter

我想允许从特定行(6)中过滤一列(A或1)中的值。我可以为行中的所有列提供过滤器,如下所示:

Range sixthRow = (Range)_xlSheet.Rows[6];
sixthRow.AutoFilter(1,
        Type.Missing,
        XlAutoFilterOperator.xlAnd,
        Type.Missing,
        true);

...或者像这样:

Range column1Row6 = _xlSheet.Range[_xlSheet.Cells[6, 1], _xlSheet.Cells[6, 1]];
column1Row6.AutoFilter(1,
        Type.Missing,
        XlAutoFilterOperator.xlAnd,
        Type.Missing,
        true);

......所以它看起来像这样:

enter image description here

...但我只希望第6列的第一列过滤(“第6行”部分工作正常),而不是第2,3,4和5列(可能还有更多)

如何仅在第一列(A或1)上使用过滤器而不是整行?

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,我会在普通的Excel中使用黑客来完成对单个列的过滤。我曾经突出显示整个列并点击过滤器按钮,当你有数万行数据时,真的很痛苦。

正如您可能知道的那样,当您只有一个单元格突出显示时,它会自动过滤整行,就像说任何一个单元格意味着“没有特别是”一样突出显示。

很偶然,我发现如果你突出显示超出一个单元格的任何范围,它会试图找出你的意思。在这种情况下,如果突出显示标题行(A5)和紧接其下方的一个单元格,然后点击过滤器,它将与突出显示整个列具有相同的效果。

因此,在C#互操作术语中,这将等同于该操作:

_xlSheet.Range[_xlSheet.Cells[5, 1], _xlSheet.Cells[6, 1]].AutoFilter();