簡體   English   中英

使用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 ,並且我的應用程序停止。 我認為如果沒有引用,例如, if(LAST_NAME returns NullReferenceException then LAST_NAME = null)可以將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傳播運算符

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();

仍然,如果您希望返回null而不是string.Empty則可以對上面的ToNullSafeString擴展方法進行一些修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM