2017-08-26 50 views
0

我需要根據excel中的字段更新數據庫,但我需要檢查一列中的一行中的5個字段是否爲空,然後停止更新數據庫。Excel空字段

   foreach (var sheets in workbook.Worksheets) 
       { 
        SqlCommand comm = new SqlCommand(query, conn); 
        comm.CommandType = System.Data.CommandType.Text; 

        var start = sheets.Dimension.Start; 
        var end = sheets.Dimension.End; 

        for (int i = start.Row + 1; i < end.Row; i++) 
        { 
         object columnE = sheets.Cells[i, 4].Value; 
         string aa = columnE.ToString(); 

         if (aa.StartsWith("E") && aa.EndsWith("ETO")) 
         { 
          comm.Parameters.AddWithValue("@columnE", columnE); 

          object columnB = sheets.Cells[i, 1].Value; 
          comm.Parameters.AddWithValue("@columnB", columnB); 
         } 
         else if (string.IsNullOrEmpty(aa) || !aa.StartsWith("E") && !aa.EndsWith("ETO")) 
         { 
          conn.Close(); 
         } 

         comm.ExecuteNonQuery(); 

         comm.Parameters.Clear(); 
        } 
       } 

我有一個邏輯,當第一場爲null或空或不是旨在停止更新,但我不能找到一種方法來檢查,對於連續5場。

我找到了解決方案,這裏是面向未來的人。

   foreach (var sheets in workbook.Worksheets) 
       { 
        conn.Open(); 

        result = sheets.ToString(); 

        SqlCommand comm = new SqlCommand(query, conn); 
        comm.CommandType = System.Data.CommandType.Text; 

        var start = sheets.Dimension.Start; 
        var end = sheets.Dimension.End; 

        int counter = 0; 

        for (int i = start.Row + 1; i < end.Row; i++) 
        { 
         object columnE = sheets.Cells[i, 5].Value; 
         string aa = ""; 
         if (columnE != null) 
         { 
          aa = columnE.ToString(); 
         } 

         object columnB = sheets.Cells[i, 2].Value; 

         if (aa.StartsWith("E") && aa.EndsWith("ETO") && conn.State == System.Data.ConnectionState.Open) 
         {        
          comm.Parameters.AddWithValue("@columnE", columnE); 

          comm.Parameters.AddWithValue("@columnB", columnB); 

          comm.ExecuteNonQuery(); 

          comm.Parameters.Clear(); 
         } 

         if (columnE == null) 
         { 
          counter++; 
         } 

         if (counter == 5) 
         { 
          conn.Close(); 
         }                    
        } 
       } 

回答

1

只計數到5你有真正的邏輯,否則重置計數器重新開始。

Int counter =0; 
    for(){ 
    If (logictrue()){ 
    counter++; 
    if(counter==5) 
     Update(); 
    } else 
     counter=0; 

    } 
+0

我只是retweaked你的代碼,並得到解決方案。每次編纂不符合我增加計數器,當計數器5停止應用程序。謝謝你的提示 – Nemanja

+0

@Nemanja如果它適合你接受未來用戶的正確答案 – lvl4fi4

+0

我剛剛編輯了我的問題並添加了答案。這並沒有真正解決我的問題,但給了我一個提示如何做到這一點。 – Nemanja