我正在读取一个excel文件,然后将内容存储在DB中。问题是excel表列中的空格检查。有些列是空格,对于它们,DB值将为null。我在读取单元格时检查了空值,但不知道它是否按预期工作。
代码
if (workSheet.Cells[rowIterator, 12].Value != null)
store.WeeklyOff = workSheet.Cells[rowIterator, 12].Value.ToString();
if (workSheet.Cells[rowIterator, 13].Value != null)
store.OpenTime = workSheet.Cells[rowIterator, 13].Value.ToString();
if (workSheet.Cells[rowIterator, 14].Value != null)
store.CloseTime = workSheet.Cells[rowIterator, 14].Value.ToString();
在上面的代码片段中,我为每个单元格设置了空值检查。问题是第12列也是空格,并且对于此检查工作正常,即if
条件为假并且它移动到下一个语句但是从第13列开始,空检查不起作用。在调试时,我可以看到第13列和第13列的null
。 14,仍然!= null
检查未经过验证,if
语句中的代码被执行,我得到空指针异常。我已经尝试了许多其他的东西进行空检查,但没有任何东西没有按预期工作。从最近1天开始苦苦挣扎但似乎没有任何效果。所有变量都定义为String
。请指教。
答案 0 :(得分:0)
尝试以下方法:
var x = string.IsNullOrEmpty(workSheet.Cells[rowIterator, 13].Value;
if(value != null)
{
store.OpenTime = workSheet.Cells[rowIterator, 13].Value.ToString();
}
或
Type t = workSheet.Cells[rowIterator, 13].value.GetType();
if (t.Equals(typeof(string)))
{
var x = string.IsNullOrEmpty(workSheet.Cells[rowIterator, 13].Value;
if(value != null)
{
store.OpenTime = workSheet.Cells[rowIterator, 13].Value.ToString();
}
}
答案 1 :(得分:0)
try
{
if(!string.IsNullOrEmpty(workSheet.Cells[rowIterator, 13].Value.ToString()))
{
store.OpenTime = workSheet.Cells[rowIterator, 13].Value.ToString();
}
}
catch(NullReferenceException)
{
store.OpenTime = SomeValue;
}