2017-09-26 12 views
1

Excelからアプリケーションにインポートし、asp.net mvcとwcfを使用してデータベースに保存します。 nullフィールドのためにエラーが発生します。データベースとコードをチェックして、そのフィールドにnullを許可することを確認しましたexcelインポートでnullフィールドをチェックする方法

以下のコントローラを参照してください。

コントローラ

public ActionResult ImportCacExcel(HttpPostedFileBase FileUpload) 
{ 
    List<string> data = new List<string>(); 
    var bodsList = new List<CAC>(); 
    if (FileUpload != null) 
    { 

     HttpPostedFileBase file = Request.Files["FileUpload"]; 
     if (true)//FileUpload.ContentType == "application/vnd.ms-excel" || FileUpload.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") 
     { 
      using (var package = new ExcelPackage(file.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 CAC(); 

        bod.RC_NUMBER = workSheet.Cells[rowIterator, 1].Value.ToString();//.ToString().Trim(); 
        bod.COMPANY_NAME = workSheet.Cells[rowIterator, 2].Value.ToString();//.ToString().Trim(); 
        bod.OWNERSHIP_STRUCTURE = workSheet.Cells[rowIterator, 3].Value.ToString();//.ToString().Trim();  
        bod.ADDRESS_STREET = workSheet.Cells[rowIterator, 4].Value.ToString(); 
        bod.ADDRESS_CITY = workSheet.Cells[rowIterator, 5].Value.ToString(); 
        bod.ADDRESS_STATE = workSheet.Cells[rowIterator, 6].Value.ToString(); 
        bod.ADDRESS_PMB = workSheet.Cells[rowIterator, 7].Value.ToString(); 
        bod.ADDRESS_POBOX = workSheet.Cells[rowIterator, 8].Value.ToString(); 
        bod.ADDRESS_LGA = workSheet.Cells[rowIterator, 9].Value.ToString(); 

        try 
        { 
         bod.DATE_OF_REGISTRATION = Convert.ToDateTime("01/01/" + workSheet.Cells[rowIterator, 4].Value);//.ToString().Trim(); 
        } 
        catch (Exception e) 
        { 
         data.Add("Bad Date format for item at row " + rowIterator); 
        } 

        bod.ACTION_STATUS = 1; 
        bod.CREATED_DATE = DateTime.Now; 
        bodsList.Add(bod); 
       } 
      } 
      foreach (var item in bodsList) 
      { 
       _cacService.AddCac(item); 
      } 

      return RedirectToAction("Index"); 
     } 
     else 
     { 
      data.Add("<ul>"); 
      data.Add("<li>Only Excel file format is allowed</li>"); 
      data.Add("</ul>"); 
      data.ToArray(); 
      return Json(data, JsonRequestBehavior.AllowGet); 
     } 
    } 
    else 
    { 
     data.Add("<ul>"); 
     if (FileUpload == null) data.Add("<li>Please choose Excel file</li>"); 
     data.Add("</ul>"); 
     data.ToArray(); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 
} 

どのように私は

  1. RC_NUMBER
  2. COMPANY_NAME
  3. OWNERSHIP_STRUCTURE
0などの分野場合ckeckするコントローラで自分のコードを変更するようにしてください

がnullまたは空の場合、ユーザーにそれを示す必要があります。フィールドADDRESS_LGA

  • ADDRESS_CITY
  • ADDRESS_STATE
  • ADDRESS_PMB
  • ADDRESS_POBOX
  • ADDRESS_STREET
    1. よう

    がnullまたは空の場合でも、それはにnullを追加する必要があります データベースにExcelを変換して保存します。

  • 答えて

    0

    ユーザー入力の検証を適用するために、NULL値は渡されません。クライアント側の検証。 javascriptを使用すると最適です。これにより、フォームが転記されなくなります。これには、クライアント側の検証に失敗するのを防ぎ、プログラムのエラーを防ぐために、コントローラにサーバー側の検証も含める必要があります。

    if(String.IsNullOrWhiteSpace(workSheet.Cells[rowIterator, 1].Value.ToString()) 
    { 
        // Do something to prevent form submission. 
    } 
    else 
    { 
    
        bod.RC_NUMBER = workSheet.Cells[rowIterator, 1].Value.ToString(); 
    } 
    

    nullにすることができるすべての値。それらをnullに初期化する方が簡単かもしれません。次に、値が実際にヌルであるかどうかをチェックし、そうでない場合は、その値をCAC属性に割り当てます。

    bod.ADDRESS_STREET = null; 
    if(!String.IsNullOrWhiteSpace(workSheet.Cells[rowIterator, 1].Value.ToString()) 
    { 
        bod.ADDRESS_STREET = workSheet.Cells[rowIterator, 4].Value.ToString(); 
    } 
    
    +0

    **ありがとうございます**今後の発生を防ぐために質問があります。私はasp.net mvcでwcfを使用しました。 wcfではデータアノテーションを使用しました。しかし、サービスを利用している間は、データ注釈を実装していません。私はあなたが私が解決するのを助けたエラーを持っている理由。データアノテーション – Gbenga

    +0

    @Gbengaを実装するにはどうすればよいでしょうか?これは全く新しい質問です:)これがあなたの質問に答えた場合は、答えとしてマークすることを検討することがあります。 –

    関連する問題