使用EPPlus导入Excel文件时处理空单元格

时间:2016-06-19 10:32:21

标签: c# asp.net asp.net-mvc nullreferenceexception epplus

我想使用EPPLUS将数据从Excel导入DataBase。从这里我拿了代码:https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt6

问题是excel中有时候是空单元格。如果单元格为空,则会收到错误:null,我的应用程序停止。我认为好的解决方案是将if(LAST_NAME returns NullReferenceException then LAST_NAME = null)值分配给特定变量,如果没有参考,例如var newRecord = new DB_USER { ID = Int32.Parse(worksheet.Cells[idColumn + row].Value.ToString()), FIRST_NAME = worksheet.Cells[firstNameColumn + row].Value.ToString(), LAST_NAME = worksheet.Cells[lastNameColumn + row].Value.ToString() //If this value has NullReferenceException then assign null or "" }; - 但我不知道如何在代码中执行此操作。

var $numbers = $onclick.match(/(\d*),(\d*),(\d)/);
var first = $numbers[1] // Returns 14754572 
var second = $numbers[2] // Returns 782339
var third = $numbers[3] // Returns 2
console.log('1:'+first,' 2:'+second,' 3:'+third);

2 个答案:

答案 0 :(得分:3)

如果您使用的是最新的C#版本(6.0),则可以使用null propagation operator

LAST_NAME = worksheet?.Cells[lastNameColumn + row]?.Value?.ToString()

答案 1 :(得分:1)

我觉得为空单元格分配空字符串string.Empty很好。如果你没事,你可以这样说:

var newRecord = new DB_USER
      {
           ID = Int32.Parse(worksheet.Cells[idColumn + row].Value.ToString()),
           FIRST_NAME = worksheet.Cells[firstNameColumn + row].Value.ToString(),
           LAST_NAME = worksheet.Cells[lastNameColumn + row].Value ?? string.Empty).ToString() //for a null value assign a empty string else the string value
       };

更简洁的方法是扩展方法:

public static string ToNullSafeString(this object obj)
{
    return (obj ?? string.Empty).ToString();
}

并将其用作:

LAST_NAME = worksheet.Cells[lastNameColumn + row].Value.ToNullSafeString();

如果您希望返回null而不是string.Empty,则稍微修改上述ToNullSafeString扩展方法即可。