当使用过滤范围时,我如何访问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;
}
}
现在我得到了类型不匹配错误。我在这里漏掉了什么基本的东西?
我相信您在调用ws.Cells[row, "N"]
时遇到了类型不匹配。在原代码中,row
是一个int
。修改后的代码中,row
为Excel.Range
。
考虑到,在修改后的代码中,row
是一个单行(多列)范围,您所需要做的就是索引到该行对应于n列的单元格。假设您的范围从a列开始,这将是第14列的单元格。
。
Object nObj = ((Excel.Range)row.Cells[1, 14]).Text;