[英]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.