在加载到表之前,在Excel中testing值

使用C#我从10列Excel电子表格(到SQL Server Express中)加载数据并在加载之前testing空值。 我使用的代码适用于非关键字段,但是当它在关键字段中遇到空值时,我得到以下系统生成的错误消息:对象引用未设置为对象的实例。 我希望Response.Write在系统产生错误之前popup并且执行代码停止。 我的代码如下:

if ((string)(range.Cells[rowCount, columnCount] as Excel.Range).Value2.ToString() != null) { myVariable = (string)(range.Cells[rowCount, columnCount] as Excel.Range).Value2.ToString(); } else { Response.Write(@"<script language='javascript'>alert('Update Aborted... \n \nThe load " + "process has encountered an incomplete record on row " + rowCount + ". Please " + "correct your Excel file and reload.');</script>"); return; } 

条件应该是这样的,然后将其转换为string

 if (range.Cells[rowCount, columnCount] as Excel.Range).Value2!=null 
 (range.Cells[rowCount, columnCount] as Excel.Range).Value2.ToString() 

在这里,如果Value2为null,则会有NullReferenceException

 (string)(range.Cells[rowCount, columnCount] as Excel.Range).Value2.ToString() != null 

这个比较是毫无意义的,因为(string)(range.Cells [rowCount,columnCount] as Excel.Range).Value2.ToString()不能为空。

 (string)(range.Cells[rowCount, columnCount] as Excel.Range).Value2.ToString() 

铸造到string是毫无意义的,因为它已经是string了。

所以我build议改变它

 (range.Cells[rowCount, columnCount] as Excel.Range).Value2 != null 

此外,范围的操作是很长的,所以最好不要把这个代码调用两次,并做一个variables

 object value2 = (range.Cells[rowCount, columnCount] as Excel.Range).Value2;