ASP.NET MVC-Excel 업로드에서 중복을 처리하는 방법

다니엘

Excel 파일을 업로드하고 ASP.NET MVC를 사용하여 데이터베이스에 저장합니다. 나는 성공했다 :

  1. Excel 파일 가져 오기

  2. 데이터베이스에 저장

아래 내 컨트롤러를 참조하십시오.

제어 장치

        public ActionResult ImportCountriesExcel(HttpPostedFileBase FileUpload)
    {
        string data = "";
        var notif = new UINotificationViewModel()
        {
            notif_message = "Record Saved successfully",
            notif_type = NotificationType.SUCCESS,
        };
        var bodsList = new List<COUNTRIES>();
        if (FileUpload != null)
        {
            // tdata.ExecuteCommand("truncate table OtherCompanyAssets");  
            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);
                            if (bod.COUNTRY_CODE == "")
                                message += "<li> Country Code is empty at row " + rowIterator + "</li>";
                            bod.COUNTRY_NAME = Convert.ToString(workSheet.Cells[rowIterator, 2].Value);
                            if (bod.COUNTRY_NAME == "")
                                message += "<li> Country Name is empty at row " + rowIterator + "</li>";
                            if (bod.COUNTRY_DESC == "")
                                message += "<li> Country Desc is empty at row " + rowIterator + "</li>";
                            bodsList.Add(bod);
                    }
                }
                foreach (var item in bodsList)
                {
                    _countriesService.AddCountry(item);
                }
                return RedirectToAction("Index");
            }
                catch (Exception e)
                {
                    notif.notif_message = "Application error, Contact the Administrator";
                    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
        {
            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. 일부 가져 오기에는 공백이 있습니다.
  2. 그것은 복제를 허용합니다

어떻게해야합니까?

  1. 트림을 사용하여 공백 제거
  2. 중복이있을 때마다 (레코드가 이미있는 경우) COUNTRY_CODE 및 COUNTRY_NAME을 기준으로 필터링해야합니다. 그런 다음 시스템은 이미 존재하는 레코드 목록이어야합니다. 업데이트하거나 복제 할 수있는 항목을 사용자에게 묻습니다.
수주

중복을 방지하기 위해 데이터베이스에서 기존 항목을 모두 읽고 사전에 저장할 수 있으며 엑셀 행의 각 항목을 반복하는 동안 사전을 확인하여 데이터베이스에 추가하지 않은 경우 해당 항목이 있는지 확인하고 추가 할 수 있습니다. 사전.

var countryDict=db.Countries.ToDictionary(a => a.Code, a => a.Name);
var duplicateItems = new List<string>();

//your existing code goes here
for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)
{
   var countryCode = "Read this from the excel cell";
   var countryName = "Read this from the excel cell";

   if (countryDict.ContainsKey(countryCode))
   {
      duplicateItems.Add(countryCode);
   }
   else
   {
       countryDict.Add(countryCode,countryName);
      //existing code to save
   }
}
if(duplicateItems.Any()
{
   //This means duplicates exist
}

Trim은 문자열에서 선행 및 후행 공백을 제거하기 위해 호출 할 수있는 방법 일뿐입니다. NULL로 호출하지 않았는지 확인하십시오.

var trimmedValue= someStringVariableWhichCouldBeNull?.Trim();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

asp.net C # Webform에서 Excel을 그리드처럼 만드는 방법

분류에서Dev

asp.net C # Webform에서 Excel을 그리드처럼 만드는 방법

분류에서Dev

AngularJS $ http 서비스에서 asp.net MVC로 파일을 업로드하는 방법

분류에서Dev

ASP.NET MVC에서 추가 데이터가있는 파일을 업로드하는 방법

분류에서Dev

ASP.Net MVC 5에서 다 대다 동일한 테이블 (사용자)을 처리하는 방법-Fluent API

분류에서Dev

ASP.net Custom Control 내에서 PostBack을 처리하는 방법

분류에서Dev

ASP.Net MVC에서 클라이언트 컴퓨터에 새 Excel 파일을 만드는 방법

분류에서Dev

ASP.NET 처리기의 URL을 jquery 파일 업로드에 전달하는 방법은 무엇입니까?

분류에서Dev

경로 속성을 사용하여 asp.net mvc에서 작업을 호출하는 방법-asp.net mvc에서 라우팅

분류에서Dev

Angular에서 ASP.NET Core Web API로 파일을 업로드하는 방법

분류에서Dev

ASP.NET MVC에서 AutoMapper 특성을 구성하는 방법

분류에서Dev

ASP.NET MVC 5에서 applozic을 사용하는 방법

분류에서Dev

ASP.NET MVC 응용 프로그램의 MVCMailer에서 예외를 처리하는 방법

분류에서Dev

복잡한 json을 ASP.Net MVC의 모델에 매핑하는 방법

분류에서Dev

jQuery 메서드 내에서 @razor로 드롭 다운 목록을 렌더링하는 방법-ASP.NET MVC

분류에서Dev

ASP.NET MVC 4의 작업 메서드에 HTML 요소가 포함 된 문자열을 만드는 방법

분류에서Dev

ASP.NET MVC에서 비동기 적으로 업로드 된 양식 파일을 유지하는 방법은 무엇입니까?

분류에서Dev

ASP.net FileUpload Control에서 업로드 후 파일을 삭제하는 방법

분류에서Dev

asp.net mvc의 문자열에 파일을로드하는 방법

분류에서Dev

Asp .net MVC에서 드롭 다운 목록을 확인하는 방법

분류에서Dev

ASP.NET MVC에서 HTML 요소의 Id 특성을 추출하는 방법 (foreach 루프를 사용하여 생성 된 여러 제출 처리)

분류에서Dev

ASP.Net MVC에서 드롭 다운 목록을 만드는 방법

분류에서Dev

ASP.NET Core MVC에서 AJAX 오류를 올바르게 처리하는 방법은 무엇입니까?

분류에서Dev

asp.net mvc에서 jQuery를 사용하여 ID로 부분보기 입력 필드 값을 얻는 방법

분류에서Dev

브라우저에서 창을 닫는 방법 (ASP.NET MVC)

분류에서Dev

ASP.NET MVC5에서 모달을 여는 방법

분류에서Dev

Asp.Net MVC 여러 요청 (스레드)을 처리 할 수있는 전역 정보를 저장하는 방법

분류에서Dev

동시 세션으로 인해 중복을 만드는 ASP.NET MVC Entity Framework

분류에서Dev

asp.net mvc에서 devexpress 대안 (zebra) 그리드를 설정하는 방법

Related 관련 기사

  1. 1

    asp.net C # Webform에서 Excel을 그리드처럼 만드는 방법

  2. 2

    asp.net C # Webform에서 Excel을 그리드처럼 만드는 방법

  3. 3

    AngularJS $ http 서비스에서 asp.net MVC로 파일을 업로드하는 방법

  4. 4

    ASP.NET MVC에서 추가 데이터가있는 파일을 업로드하는 방법

  5. 5

    ASP.Net MVC 5에서 다 대다 동일한 테이블 (사용자)을 처리하는 방법-Fluent API

  6. 6

    ASP.net Custom Control 내에서 PostBack을 처리하는 방법

  7. 7

    ASP.Net MVC에서 클라이언트 컴퓨터에 새 Excel 파일을 만드는 방법

  8. 8

    ASP.NET 처리기의 URL을 jquery 파일 업로드에 전달하는 방법은 무엇입니까?

  9. 9

    경로 속성을 사용하여 asp.net mvc에서 작업을 호출하는 방법-asp.net mvc에서 라우팅

  10. 10

    Angular에서 ASP.NET Core Web API로 파일을 업로드하는 방법

  11. 11

    ASP.NET MVC에서 AutoMapper 특성을 구성하는 방법

  12. 12

    ASP.NET MVC 5에서 applozic을 사용하는 방법

  13. 13

    ASP.NET MVC 응용 프로그램의 MVCMailer에서 예외를 처리하는 방법

  14. 14

    복잡한 json을 ASP.Net MVC의 모델에 매핑하는 방법

  15. 15

    jQuery 메서드 내에서 @razor로 드롭 다운 목록을 렌더링하는 방법-ASP.NET MVC

  16. 16

    ASP.NET MVC 4의 작업 메서드에 HTML 요소가 포함 된 문자열을 만드는 방법

  17. 17

    ASP.NET MVC에서 비동기 적으로 업로드 된 양식 파일을 유지하는 방법은 무엇입니까?

  18. 18

    ASP.net FileUpload Control에서 업로드 후 파일을 삭제하는 방법

  19. 19

    asp.net mvc의 문자열에 파일을로드하는 방법

  20. 20

    Asp .net MVC에서 드롭 다운 목록을 확인하는 방법

  21. 21

    ASP.NET MVC에서 HTML 요소의 Id 특성을 추출하는 방법 (foreach 루프를 사용하여 생성 된 여러 제출 처리)

  22. 22

    ASP.Net MVC에서 드롭 다운 목록을 만드는 방법

  23. 23

    ASP.NET Core MVC에서 AJAX 오류를 올바르게 처리하는 방법은 무엇입니까?

  24. 24

    asp.net mvc에서 jQuery를 사용하여 ID로 부분보기 입력 필드 값을 얻는 방법

  25. 25

    브라우저에서 창을 닫는 방법 (ASP.NET MVC)

  26. 26

    ASP.NET MVC5에서 모달을 여는 방법

  27. 27

    Asp.Net MVC 여러 요청 (스레드)을 처리 할 수있는 전역 정보를 저장하는 방법

  28. 28

    동시 세션으로 인해 중복을 만드는 ASP.NET MVC Entity Framework

  29. 29

    asp.net mvc에서 devexpress 대안 (zebra) 그리드를 설정하는 방법

뜨겁다태그

보관