Предотвращение дублирования полей при загрузке данных EXCEL с помощью ASP.NET MVC
У меня есть этот класс моделей
общественность страны()
{
public int COUNTRY_ID { get; set; }
публичная строка COUNTRY_CODE { get; set; }
публичная строка COUNTRY_NAME { get; set; }
}
Я хочу выполнить пакетную загрузку данных из Excel со всеми вышеперечисленными полями и сохранить их в базе данных. Я хочу, чтобы код использовал это поле КОД СТРАНЫ как то Тип uniqueidentifier.
Он будет перебирать лист Excel, чтобы проверить, существует ли код страны в базе данных.
1. Приложение будет сохранить тот, что не в существование, используя КОД_СТРАНЫ
2. он покажет пользователю список кодов стран, существующих в базе данных.
3. он спросит, хочет ли пользователь продолжить: те, чтобы обновить, а те, чтобы пропустить.
4. пользователь сможет выбрать те, которые он хочет обновить из последних.
5. Приложение будет сохранить некоторые из них и откажитесь от невыбранных один.
Пожалуйста, как мне это сделать?
Код, который я написал, будет только загружать и сохранять, но не будет обрабатывать дубликаты.
[HttpPost] public ActionResult ImportCountriesExcel(HttpPostedFileBase FileUpload) { string data = ""; var bodsList = new List<COUNTRIES>(); if (FileUpload != null) { HttpPostedFileBase file = Request.Files["FileUpload"]; if (true)//FileUpload.ContentType == "application/vnd.ms-excel" || FileUpload.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { try { string message = ""; using (var package = new ExcelPackage(FileUpload.InputStream)) { var currentSheet = package.Workbook.Worksheets; // if(currentSheet.Count) var workSheet = currentSheet.First(); var noOfCol = workSheet.Dimension.End.Column; var noOfRow = workSheet.Dimension.End.Row; for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++) { var bod = new COUNTRIES(); bod.COUNTRY_CODE = Convert.ToString(workSheet.Cells[rowIterator, 1].Value).Trim(); bod.COUNTRY_NAME = Convert.ToString(workSheet.Cells[rowIterator, 2].Value).Trim(); bodsList.Add(bod); } } foreach (var item in bodsList) { _countriesService.AddCountry(item); } return RedirectToAction("Index"); } catch (Exception e) { notif.notif_message = "Data import error, Kindly verify the data."; notif.notif_type = NotificationType.ERROR; } TempData["notif"] = notif; return RedirectToAction("Index"); } else { notif.notif_type = NotificationType.ERROR; //alert message for invalid file format data += "<ul>"; data += "<li>Only Excel file format is allowed</li>"; data += "</ul>"; notif.notif_message = data; TempData["notif"] = notif; return RedirectToAction("Index"); //return Json(data, JsonRequestBehavior.AllowGet); } } else { notif.notif_type = NotificationType.ERROR; data += "<ul>"; if (FileUpload == null) data += "<li>Please choose Excel file</li>"; data += "</ul>"; notif.notif_message = data; TempData["notif"] = notif; return RedirectToAction("Index"); //return Json(data, JsonRequestBehavior.AllowGet); } }
Что я уже пробовал:
[HttpPost] public ActionResult ImportCountriesExcel(HttpPostedFileBase FileUpload) { string data = ""; var bodsList = new List<COUNTRIES>(); if (FileUpload != null) { HttpPostedFileBase file = Request.Files["FileUpload"]; if (true)//FileUpload.ContentType == "application/vnd.ms-excel" || FileUpload.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { try { string message = ""; using (var package = new ExcelPackage(FileUpload.InputStream)) { var currentSheet = package.Workbook.Worksheets; // if(currentSheet.Count) var workSheet = currentSheet.First(); var noOfCol = workSheet.Dimension.End.Column; var noOfRow = workSheet.Dimension.End.Row; for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++) { var bod = new COUNTRIES(); bod.COUNTRY_CODE = Convert.ToString(workSheet.Cells[rowIterator, 1].Value).Trim(); bod.COUNTRY_NAME = Convert.ToString(workSheet.Cells[rowIterator, 2].Value).Trim(); bodsList.Add(bod); } } foreach (var item in bodsList) { _countriesService.AddCountry(item); } return RedirectToAction("Index"); } catch (Exception e) { notif.notif_message = "Data import error, Kindly verify the data."; notif.notif_type = NotificationType.ERROR; } TempData["notif"] = notif; return RedirectToAction("Index"); } else { notif.notif_type = NotificationType.ERROR; //alert message for invalid file format data += "<ul>"; data += "<li>Only Excel file format is allowed</li>"; data += "</ul>"; notif.notif_message = data; TempData["notif"] = notif; return RedirectToAction("Index"); //return Json(data, JsonRequestBehavior.AllowGet); } } else { notif.notif_type = NotificationType.ERROR; data += "<ul>"; if (FileUpload == null) data += "<li>Please choose Excel file</li>"; data += "</ul>"; notif.notif_message = data; TempData["notif"] = notif; return RedirectToAction("Index"); //return Json(data, JsonRequestBehavior.AllowGet); } }