Member 2294293 Ответов: 1

Предотвращение дублирования полей при загрузке данных 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);
    }
}

1 Ответов

Рейтинг:
1

Laxmidhar tatwa technologies

[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();
string chk = Convert.ToString(workSheet.Cells[rowIterator, 1].Value).Trim();
bool isexists = bodsList.Any( x =>x.COUNTRY_CODE == chk )
if(!isexists)
 bodsList.Add(bod);
                                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);
            }
        }


Member 2294293

Как я могу предоставить пользователю возможность выбора из списка данных, которые уже существуют, либо для обновления, либо для игнорирования