2017-03-21 1 views
0

나는 내 데이터 파일에 복사 한 내용을 내 데이터베이스에 삽입 (대량 삽입)하는 내 datagridview에 삽입하는 코드 조각을 가지고 있습니다. 내 문제는 내가있는 DataGridView에 붙여 넣을 때 첫 번째 행 내 열 이름이된다 (그리고 잡는다)이다, 왜 나는 확실하지 않다 다음과 같이 코드 :Datagridview 클릭 이벤트에 일괄 삽입

내 대량 삽입 버튼으로
private void btnBulkAdd_Click(object sender, EventArgs e) 
     { 
      DataObject o = (DataObject)Clipboard.GetDataObject(); 
      if (o.GetDataPresent(DataFormats.Text)) 
      { 
       if (dgvIntake.RowCount > 0) 
        dgvIntake.Rows.Clear(); 

       if (dgvIntake.ColumnCount > 0) 
        dgvIntake.Columns.Clear(); 

       bool columnsAdded = false; 
       string[] pastedRows = System.Text.RegularExpressions.Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n"); 
       int j = 0; 
       foreach (string pastedRow in pastedRows) 
       { 
        string[] pastedRowCells = pastedRow.Split(new char[] { '\t' }); 

        if (!columnsAdded) 
        { 
         for (int i = 0; i < pastedRowCells.Length; i++) 
          dgvIntake.Columns.Add("col" + i, pastedRowCells[i]); 

         columnsAdded = true; 
         continue; 
        } 

        dgvIntake.Rows.Add(); 
        int myRowIndex = dgvIntake.Rows.Count + 1; 

        using (DataGridViewRow myDataGridViewRow = dgvIntake.Rows[j]) 
        { 
         for (int i = 0; i < pastedRowCells.Length; i++) 
          myDataGridViewRow.Cells[i].Value = pastedRowCells[i]; 
        } 
        j++; 
       } 
      } 
     } 

:

private void btnBulkInsert_Click(object sender, EventArgs e) 
     { 
      string strQuery; 
      try 
      { 
       using (SqlConnection conn = new SqlConnection("Data Source = ROTIMSQL01; Initial Catalog = TDB; Persist Security Info = True; User ID = adiM; Password = [email protected]")) 
       { 
        using (SqlCommand comm = new SqlCommand()) 
        { 
         comm.Connection = conn; 
         conn.Open(); 
         for(int i=0;i<dgvIntake.Rows.Count; i++) 
         { 
          strQuery = @"INSERT INTO [dbo].[TestTable] VALUES " + dgvIntake.Rows[i].Cells["ID"].Value + "," 
           + dgvIntake.Rows[i].Cells["Other1"].Value + ",'" + dgvIntake.Rows[i].Cells["Other2"].Value + "'," + dgvIntake.Rows[i].Cells["Other3"].Value + "," 
           + dgvIntake.Rows[i].Cells["Other4"].Value + "," + dgvIntake.Rows[i].Cells["Other5"].Value + ")"; 
           comm.CommandText = strQuery; 
          comm.ExecuteNonQuery(); 
         } 
        } 
       } 
      } 
      catch(Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

내가 뭘 잘못하고 있니? 미리 감사드립니다.

답변

0

엑셀에서 '열 이름'이 존재하지 않습니다. Excel에서 '값'TOO이 표시됩니다.

엑셀에서 유일하게 열 이름처럼 A, B, C, D, E .... 당신이 붙여 Z는 AA가, AB, AC ......

는 그래서는 정상입니다 첫 번째 행의 columnname.

그래서 두 솔루션 :

  1. 세력은 첫 번째 행의 COLUMNNAMES의 컨트롤을 할 필요가있다.

  2. Excel에서 열 이름을 복사해서는 안됩니다.