我正在使用 Excel.dll 从 C# 应用程序中的 Excel 工作簿读取数据。读取每一行后,我将该行添加到数据表中。当我遇到一个空白单元格时,应用程序崩溃,引发以下错误:
"对象引用未设置为对象的实例。">
以下是发生此崩溃的循环:
foreach (var row in worksheet.Rows.Skip(1))
{
DataRow dr = dt.NewRow();
int cellNumber = 0;
foreach (var cell in row.Cells)
{
cellNumber++;
if (cellNumber > 6)
break;
switch (cell.ColumnIndex)
{
case 0:
dr["BatchID"] = cell.Value;
break;
case 1:
dr["RecID"] = cell.Value;
break;
case 2:
dr["Rejection"] = cell.Value;
break;
case 3:
dr["Comment"] = cell.Value;
break;
case 4:
dr["Logged"] = double.Parse(cell.Value);
break;
case 5:
dr["Modified"] = cell.Value;
break;
}
}
dt.Rows.Add(dr);
}
这一切都在一个 TRY/CATCH 块中。在第一个输入行(没有空白单元格(上一切正常,但在第二个输入行(第四个单元格为空白(上,它会读取前三个单元格,然后在 SWITCH 行上崩溃,进入我的 CATCH 块。
如何查看当前单元格是空白还是空,以避免此错误?
非常感谢!
在foreach
中,在 if - break
语句之后,您可以简单地添加一个空检查:
if (cell==null)
{
continue;
}