C# While循环用于检测完整单元

C# While循环用于检测完整单元,c#,excel,loops,while-loop,cells,C#,Excel,Loops,While Loop,Cells,我正在用c#和excel做一个小应用程序。 我想在工作表上创建新行,但不要在已经写了东西的行上创建新行。 要做到这一点,我的想法是查看第一列的连续单元格,然后在第一列未满的单元格上写字 这是密码 int i = 1; while (oSheet.Cells[i, 1] != null){ i = i + 1; } oSheet.Cells[i, 1] = "First Name"; 这很简单,但当我尝试这样做时,我得到了以下信息: 错误:异常解除hresult 0x800A01A8行

我正在用c#和excel做一个小应用程序。 我想在工作表上创建新行,但不要在已经写了东西的行上创建新行。 要做到这一点,我的想法是查看第一列的连续单元格,然后在第一列未满的单元格上写字

这是密码

int i = 1;
while (oSheet.Cells[i, 1] != null){
    i = i + 1;
}

oSheet.Cells[i, 1] = "First Name";
这很简单,但当我尝试这样做时,我得到了以下信息:

错误:异常解除hresult 0x800A01A8行:mscorlib

当我尝试使用if时,我可以在纸上写字,所以我不知道问题出在哪里

有人有主意吗


谢谢

试着这样做:

int i = 1;
while (oSheet.get_Range("A" + i.ToString()).Value2 != null) i++;
oSheet.get_Range("A" + i.ToString()).Value2 = "FirstName";
编辑:OP就是这样做的:

    int i = 1;
    while ((ws.Cells[i, 1] as Range).Value2 != null) i++;
    (ws.Cells[i, 1] as Range).Value2 = "First NAme";
无论哪种方式都有效

OP遇到的问题是这个
oSheet.Cells[i,1]!=空
他正在检查范围,直到他到达excel的最后一行,该范围才为空


Ah没有注意到@Erno de Weerd已经在评论中指出了这一点。

当我把它放在循环中时,我得到了一个永远不会结束的循环。也许你需要在填充值之前添加行/列。如果所有单元格都存在,你将永远循环。您应该检查单元格的内容。如果一个单元格不为空,那么
oSheet.get_Range()
的返回值是多少?现在我读到@that:“使用Range属性而不是此方法。”无论哪种方式,返回值都是…Excel.Range。如果在多个单元格上使用它(上述情况并非如此),则可以循环遍历Cells属性并检查所获得范围内的每个单元格,为什么这样认为?我认为上面的代码正是OP想要的。循环遍历第一列中的行并检查单元格是否为空。如果是空的,只需在单元格中输入“FirstName”。