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

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

但是我只需要获取应用过滤器后剩余的行,以便(查看如何使用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 已采纳

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

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

例如

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

  ask by WildBill translate from so

未解决问题?本站智能推荐: