2017-03-21 8 views
0

私はエクセルファイルからコピーしたものを、自分のデータベースに挿入(バルク挿入)し続けるdatagridviewに挿入するコードを持っています。 私の問題は、私は私のDataGridViewに貼り付けると、最初の行は、私の列名になります(そして追い越す)ということで、なぜ私はわからないんだけど、次のように コード:Datagridview Clickイベントの一括挿入

私の一括挿入ボタンについては
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では、 'columnname'が存在しません。表示されるのはです。 '値' TOO in excel。 Excelで

のみ列名は、A、B、C、D、E .... Z、AA、AB、ACのようなものである......

ので、それはあなたが貼り付けられ、その後正常です最初の行のcolumnname

ように、2つのソリューション:

  1. マイトは、最初の行のれる列上のコントロールを取る必要があります。

  2. Excelで列名をコピーしないでください。