2017-09-27 8 views
-3

ExcelスプレッドシートからDataGridviewにデータをインポートした後、Windowsフォームでユーザーが決定したテーブルを作成し、その列名を新しいテーブルに挿入しますデータグリッドビュー。動的列名を使用してDataGridviewからSQLに挿入

ユーザーは「プログラム」を使用して、他のExcelシートを他のデータベースに挿入することもできます。

事前定義されておらず、Excelスプレッドシートの列数で定義された列名を動的に追加するにはどうすればよいですか?

+0

これまでに試したことを、あなたが直面している問題と一緒に見せなければなりません。 –

+0

列名を解析するべきではないはずです - あなたはどんな問題があるのか​​を詳述する必要があります – BugFinder

+0

手近な課題は、SQLデータベースにインポートするExcelスプレッドシート用のインポートアプリケーションを作成することです。しかし、私はそれを正しく得ることができました。私はコードを提出しようとします。 –

答えて

0

ここでの目標は、エクセルのスプレッドシートをSQLサーバーデータベースにインポートするインポートアプリケーションを作成することでした。私が直面した問題は、データベースに挿入してExcelスプレッドシートに従って動的に名前を付けるために必要な数値列を取得することです。

アプリケーションはさまざまなスプレッドシートで使用され、列名はハードコードされていてはなりません。これは私が使用したコードで、スプレッドシートのすべてのデータがSQLのデータベースに挿入されるアプリケーションの最後の段階を管理したものです。

//Import Button 
    private void button5_Click(object sender, EventArgs e) 
    { 
     string createColumns = ""; 
     string columns = ""; 
     string rows = ""; 
     var grid = (DataTable)dataGridView3.DataSource; 
     for (int i = 0; i < grid.Columns.Count; i++) 
     { 
      if (i == grid.Columns.Count - 1) 
      { 
       createColumns += "[" + grid.Columns[i].ToString() + "] varchar(200) NULL"; 
       columns += "[" + grid.Columns[i].ToString() + "]"; 
      } 
      else 
      { 
       columns += "[" + grid.Columns[i].ToString() + "],"; 
       createColumns += "[" + grid.Columns[i].ToString() + "] varchar(200) NULL,"; 
      } 

     } 
     string createTable = string.Format("Create table [{0}] ({1})", textBox1.Text, createColumns); 
     rows = string.Format("Insert Into[{0}]({1})", textBox1.Text, columns); 
     for (int i = 0; i < grid.Rows.Count; i++) 
     { 
      string row = ""; 

      for (int c = 0; c < grid.Columns.Count; c++) 
      { 

       if (c == grid.Columns.Count - 1) 
        row += "'" + grid.Rows[i][c].ToString() + "'"; 
       else 
        row += "'" + grid.Rows[i][c].ToString() + "', "; 
      } 

      if (i == grid.Rows.Count - 1) 
       rows += string.Format(" ({0});", row); 
      else 
      { 
       if (i == 0) 
       { 
        rows += " Values"; 
       } 
       rows += string.Format(" ({0}),", row); 
      } 
     } 
     string s = "Integrated Security = SSPI;Persist Security Info = False;Data Source = " + 
      ServerName.Text + "; Initial Catalog = " + 
      Databases.Text; 

     SqlConnection conn = new SqlConnection(s); 

     SqlCommand cmd = new SqlCommand(); 

     cmd.CommandText = createTable; 
     cmd.Connection = conn; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 

     SqlCommand cmd2 = new SqlCommand(rows, conn); 
     cmd2.CommandType = CommandType.Text; 
     conn.Open(); 
     cmd2.ExecuteNonQuery(); 
     conn.Close(); 

     Application.Exit(); 
    } 
関連する問題