c#interop excel-将筛选范围复制到数组/列表

c#interop excel-将筛选范围复制到数组/列表,c#,com-interop,excel-interop,C#,Com Interop,Excel Interop,我想将筛选的Excel范围(特定列)复制到数组或列表中。我的问题是,我能够轻松地将正常范围复制到阵列。但当我应用过滤器时,我无法正确复制它。我试过多种方法 我尝试了Range.Cells.Value和Range.Rows.Cast()。它只给我两行(前两行),但当我根据条件筛选时,excel工作表中有15行: Excel.Range srcRange = sheet.UsedRange; srcRange.AutoFilter(field, criteria, Excel.XlA

我想将筛选的Excel范围(特定列)复制到数组或列表中。我的问题是,我能够轻松地将正常范围复制到阵列。但当我应用过滤器时,我无法正确复制它。我试过多种方法

我尝试了
Range.Cells.Value
Range.Rows.Cast()
。它只给我两行(前两行),但当我根据条件筛选时,excel工作表中有15行:

    Excel.Range srcRange = sheet.UsedRange;
    srcRange.AutoFilter(field, criteria, Excel.XlAutoFilterOperator.xlFilterValues, Type.Missing, true);
    Excel.Range filteredRange = sheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible, Type.Missing); 

    Excel.Range rn = filteredRange.Columns[columnNumber];
    //var myVal = (System.Array)rn.Rows.Cast<Excel.Range>().SelectMany(x => x.ToString());
    //var myVal = (System.Array)rn.Rows.Cast<object>().SelectMany(x => x.ToString()); //this gives exception - com object cannot be casted to string type
    var myVl = (System.Array)rn.Cells.Value;
    arr1 = myVl.OfType<object>().Select(o => o.ToString()).ToArray();
但这对我来说不是一个解决方案,因为当我想从多个列复制值时,我无法编写它!所以我在找一艘1号班轮。我不介意将值存储到数组还是列表中

如果有人能给我指出正确的方向,那将非常有帮助。谢谢

foreach (Excel.Range area in filteredRange.Areas)
       {
           foreach (Excel.Range row in area.Rows)
           {
               int index = row.Row; 
               string test = sheet.Cells[index, column].Value.ToString(); 
               tmpList.Add(test);
           }
       }