我正在使用Excel.dll从C#应用程序中的Excel工作簿中读取数据。读完每一行后,我将该行添加到DataTable中。当我遇到一个空白单元格时,应用程序崩溃,抛出以下错误:
"对象引用未设置为对象的实例。"
这是发生此崩溃的循环:
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块
如何查看当前单元格是空白还是空,以便我可以避免此错误?
非常感谢!
答案 0 :(得分:1)
在<T>
语句中,在foreach
语句之后,您只需添加一个空检查:
if - break