Range.AutoFilter-更新过滤器问题

时间:2018-06-22 17:55:14

标签: c# .net excel

我在通过Range.AutoFilter过滤出的excel文件中提取数据时遇到问题。

我正在遍历一个excel文件以查找不同的数据,因此必须“重新应用”自动过滤器以返回不同的结果。第一次应用自动筛选并运行SpecialCells(XlCellType.xlCellTypeVisible)时,我能够提取所需的数据。但是,当循环返回到自动筛选器以筛选新数据时,SpecialCells(XlCellType.xlCellTypeVisible)似乎并没有提取新数据(只是excel标头)。

我已经使用Application.Visible = true;来证明自动筛选器正在使用新数据进行过滤,但是似乎SpecialCells(XlCellType.xlCellTypeVisible)不想提取新过滤的数据。参见下文,了解如何在循环中应用自动筛选以及如何提取数据。有人可以指导我做错什么吗?

for(int row = 0, row < lineCount; row++)
{
.
.
.
//Other stuff not relate to filters happening
.
.
.
xlAppL.Visible = true;
xlRangeL.AutoFilter(<col>,<row>); //I can see this applying the new filter.
Range filterLines = xlRangeL.Cells.SpecialCells(XlCellType.xlCellTypeVisible);

Range aditionalFilter = filterLines.Areas[areaId];
object[,] af = aditionalFilter.Value2;
int linesCount = af.GetLength(0);
//Do stuff with the new filter

在使用xlRangeL.Cells.SpecialCells(XlCellType.xlCellTypeVisible); ...时,filterLines似乎没有拾取新的过滤数据。

1 个答案:

答案 0 :(得分:0)

不确定这是否是最好的解决方案,但我自己可以通过将范围传递给新方法并通过该新方法进行数据循环来纠正此问题。