我最初有一个代码段,使用UsedRange迭代Excel电子表格的行:
range = ws.UsedRange;
for (int row = 3; row <= range.Rows.Count; row++)
{
Object nObj = ((Excel.Range)ws.Cells[row, "N"]).Text;
}
但是我只需要在应用过滤器之后获取剩余的行(查看How can I get the Range of filtered rows using 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;
}
}
除了现在我遇到类型不匹配错误。我在这里错过了什么基本的东西?
答案 0 :(得分:0)
我相信你在ws.Cells[row, "N"]
的电话中遇到了类型不匹配的问题。在原始代码中,row
是int
。在修改后的代码中,row
是Excel.Range
。
鉴于此,在修改后的代码中,row
是单行(多列)范围,您需要做的就是索引该行中与N列对应的单元格。假设您的范围开始在A列中,这将是第14列中的单元格。
E.g。
Object nObj = ((Excel.Range)row.Cells[1, 14]).Text;