2017-10-12 4 views
-1

ExcelのデータをC#のdatagridviewに読み込みました。私はExcelの行をDataGridviewのColumn Nameに代入したい(例10)。デフォルトより下のコードは、Excelの最初の行を取得します。Datagridviewの列名にExcelで行を割り当てる方法を設定するC#?

using (OleDbConnection connExcel = new OleDbConnection(connString)) 
{ 
    string selectString = @"Select * from [" + comboBox1.SelectedValue.ToString() + "]"; 
    using (OleDbCommand cmdExcel = new OleDbCommand(selectString, connExcel)) 
    { 
     cmdExcel.Connection = connExcel; 
     connExcel.Open(); 
     DataTable dt = new DataTable(); 
     OleDbDataAdapter adp = new OleDbDataAdapter(); 
     adp.SelectCommand = cmdExcel; 
     adp.FillSchema(dt, SchemaType.Source); 
     adp.Fill(dt); 
     dataGridView2.DataSource = dt; 
    } 
} 
+0

あなたのコードは現在何をしていますか?あなたは何をしたいのですか(それはまだしていません)? – mjwills

+0

はい、それは動作しますが、Excelの最初の行の代わりに、私は行10 DataGridviewで列名になる割り当てたい。 – gggg

+0

したがって、1〜9行を完全に無視し、10行以下を使用したいのですか? – mjwills

答えて

0

プログラムで行う必要があります。コードでは、adp.FillSchema(dt, SchemaType.Source);は、スプレッドシートから列名を暗黙的に取得しますが、データは取得しません。あなたはデータと同じことを行うadp.Fill(dt);でそれに従います。

プログラムで行うには、行10をOleDbDataReader.Get()を使用して読み込み、各Excelセルを一致するDataGridView列ヘッダーに割り当てる必要があります。

DataRow newRow = dt.New 
newRow[1] = dr.xxx 
newRow[2] = dr.xxx 
newRow[3] = dr.xxx 
newRow[4] = dr.xxx 
newRow[5] = dr.xxx 
newRow[6] = dr.xxx 
newRow[7] = dr.xxx 
newRow[8] = dr.xxx 

dt.Rows.Add(newRow); 

これで、データの残りの行をループで同じ方法で実行する必要があります。より具体的な記事へのリンクはPopulate a DGV from a DRです。下半分はあなたがする必要があるものをカバーしています。

関連する問題