使用 EPPlus 导入 Excel 文件时处理空单元格
Dealing with empty cells when importing Excel file using EPPlus
我想使用 EPPLUS 将数据从 Excel 导入数据库。从这里我得到了代码:https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt6
问题是有时 excel 中的单元格是空的。如果单元格为空,那么我会收到错误消息:NullReferenceException
,并且我的应用程序会停止。我认为好的解决方案是在没有引用的情况下将 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 ""
};
如果您使用的是最新的 C# 版本 (6.0),那么您可以使用 null propagation operator:
LAST_NAME = worksheet?.Cells[lastNameColumn + row]?.Value?.ToString()
我觉得分配一个空字符串很好,即 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();
仍然,如果您希望 return 一个 null
而不是 string.Empty
,那么对上面的 ToNullSafeString
扩展方法稍作修改就可以了。
我想使用 EPPLUS 将数据从 Excel 导入数据库。从这里我得到了代码:https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt6
问题是有时 excel 中的单元格是空的。如果单元格为空,那么我会收到错误消息:NullReferenceException
,并且我的应用程序会停止。我认为好的解决方案是在没有引用的情况下将 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 ""
};
如果您使用的是最新的 C# 版本 (6.0),那么您可以使用 null propagation operator:
LAST_NAME = worksheet?.Cells[lastNameColumn + row]?.Value?.ToString()
我觉得分配一个空字符串很好,即 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();
仍然,如果您希望 return 一个 null
而不是 string.Empty
,那么对上面的 ToNullSafeString
扩展方法稍作修改就可以了。