在加载到表之前,在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;