当使用过滤范围时,我如何访问Excel Interop中的单元格

本文关键字:访问 Excel Interop 单元格 何访问 过滤 范围 | 更新日期: 2023-09-27 18:17:26

我最初有一个代码段,它使用userange遍历Excel电子表格的行:

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

但是我只需要得到我应用过滤器后留下的行(查看后我如何使用Excel互操作获得过滤行的范围?)我这样修改代码:

    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;
            }
    }

现在我得到了类型不匹配错误。我在这里漏掉了什么基本的东西?

当使用过滤范围时,我如何访问Excel Interop中的单元格

我相信您在调用ws.Cells[row, "N"]时遇到了类型不匹配。在原代码中,row是一个int。修改后的代码中,rowExcel.Range

考虑到,在修改后的代码中,row是一个单行(多列)范围,您所需要做的就是索引到该行对应于n列的单元格。假设您的范围从a列开始,这将是第14列的单元格。

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