2017-10-12 67 views
-1

我從excel中讀取數據到C#中的datagridview中。我想將excel中的行(例10)分配給datagridview中的Column Name。低於默認值的代碼將在Excel中獲得第一行。如何在Excel中將分配行設置爲Datagridview 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);跟數據一樣。

要以編程方式執行此操作,需要使用OleDbDataReader.Get()讀取第10行,並將每個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。下半部分涵蓋了你需要做的事情。

相關問題