使用过滤范围时,如何在Excel Interop中访问单元格?

时间:2011-12-11 20:21:33

标签: c# visual-studio-2008 excel excel-interop

我最初有一个代码段,使用UsedRange迭代Excel电子表格的行:

           range = ws.UsedRange;
           for (int row = 3; row <= range.Rows.Count; row++)
            {
                Object nObj = ((Excel.Range)ws.Cells[row, "N"]).Text;
            }

但是我只需要在应用过滤器之后获取剩余的行(查看How can I get the Range of filtered rows using Excel Interop?之后)我改变了代码:

    range = ws.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible, Type.Missing);
    foreach (Excel.Range area in range.Areas)
    {
        foreach (Excel.Range row in area.Rows)
            //for (int row = 3; row <= range.Rows.Count; row++)
            {
                Object nObj = ((Excel.Range)ws.Cells[row, "N"]).Text;
            }
    }

除了现在我遇到类型不匹配错误。我在这里错过了什么基本的东西?

1 个答案:

答案 0 :(得分:0)

我相信你在ws.Cells[row, "N"]的电话中遇到了类型不匹配的问题。在原始代码中,rowint。在修改后的代码中,rowExcel.Range

鉴于此,在修改后的代码中,row是单行(多列)范围,您需要做的就是索引该行中与N列对应的单元格。假设您的范围开始在A列中,这将是第14列中的单元格。

E.g。

Object nObj = ((Excel.Range)row.Cells[1, 14]).Text;