小编use*_*659的帖子

C#Excel Automation:使用SpecialCells()在AutoFilter()之后检索行似乎无法正常工作

这里的第一次海报:).我从WinForms C#应用程序自动化Excel 2010时遇到以下问题.我的测试表看起来如下:

Index    Value1  Value2
AAA        2       3   
AAA        3       4
AAA        3       8
BBB        2       2
BBB        5       6
BBB        3       5
CCC        1       2
CCC        2       2
DDD        2       5
Run Code Online (Sandbox Code Playgroud)

我成功打开工作簿并从我的C#应用​​程序加载工作表.之后我运行以下代码:

        Excel.Range range = xlSheet.UsedRange;
        range.AutoFilter(1, "AAA", Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);
        Excel.Range filteredRange = range.SpecialCells(Excel.XlCellType.xlCellTypeVisible);
Run Code Online (Sandbox Code Playgroud)

这按预期工作,filterRange现在包含我的测试表的前四行(列名和所有"AAA"行).但是,如果我尝试使用AutoFilter来获取所有"BBB"行,就像这样

        range.AutoFilter(1, "BBB", Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);
        Excel.Range filteredRange = range.SpecialCells(Excel.XlCellType.xlCellTypeVisible);
Run Code Online (Sandbox Code Playgroud)

我最终只得到filteredRange范围中表的第一行(列名).如果我实际打开Excel中的表,我可以看到它被正确过滤("BBB"行)被过滤,但不知何故,Range.SpecialCells()方法没有按预期运行,只返回第一行.我已经尝试了所有我能想到的东西,但由于我是Excel自动化的新手,也许我错过了一些东西,所以我认为你们可能会提供帮助.我唯一想到的是,在第一种情况下("AAA"),所有可见行都是连续的 - 列名在第1行,"AAA"行分别是2,3和4.在第二种情况下,名称在第1行,但"BBB"行的索引为5,6和7,即表中有一个"洞".这可能会影响SpecialCells()方法吗?

提前感谢您提供的任何输入!

c# excel autofilter

4
推荐指数
1
解决办法
9932
查看次数

标签 统计

autofilter ×1

c# ×1

excel ×1