繁体   English   中英

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

[英]How do I access a cell in Excel Interop when using filtered ranges?

我最初有一个代码段,它使用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;
            }
    }

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

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

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

例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM