2016-07-31 96 views
0

我想導入excel文件並將其加載到我的datagridview1導入excel文件並顯示DataGridView選中的行到另一個DataGridView

在顯示我的DataGridView裏面的文件內容後,我想選擇該行並將其傳輸到我的第二個DataGridView

請任何人都可以幫助我如何解決我的代碼?因爲我發現了錯誤:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

private void button1_Click(object sender, EventArgs e) 
{ 
    string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +textBox1.Text + ";Extended Properties='Excel 12.0 XML;HDR=YES;';"; 
OleDbConnection conn = new OleDbConnection(PathConn); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + "Sheet1" + "$]", conn); 
    DataTable dt = new DataTable(); 
    myDataAdapter.Fill(dt); 
    dataGridView1.DataSource = dt; 
} 
private void button2_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
    if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    { 
    this.textBox1.Text = openFileDialog1.FileName; 
    } 
} 
private void button3_Click(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray()) 
    { 
    dataGridView2.Rows.Remove(selRow); 
    dataGridView2.Rows.Add(selRow); 
    } 
} 
+0

請縮進你的代碼。 –

回答

0

你可以嘗試更多的東西像這樣

var selected_rows = new List<DataGridViewRow>(); 
foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray()) 
{ 
     selected_rows.Add(row); 
} 
foreach(var row in selected_rows){ 
     dataGridView1.Rows.Remove(row); 
     dataGridView2.Rows.Add(row); 
} 

C#通常不允許集合的修改,而該集合被枚舉。您通常可以通過使用初始循環簡單地收集想要操作的對象來繞過這個問題,然後您可以遍歷該對象集合。像這樣的東西

我也想象一下,打電話dataGridView1.SelectedRows應該就足夠了。沒有必要轉換爲強類型數組,但這可能比任何語法更偏向於語法偏好。

試試這個,讓我知道它是如何工作的

+0

非常感謝您的回答,但datagridview1和變量中的數據仍然不能在datagridview2中查看,當我單擊移動按鈕(button3_click)。我只是爲excel文件創建了一個打開的文件按鈕,一個加載按鈕顯示excel將文件內容轉換爲datagridview1,另一個按鈕用於將選定的行從datagridview1移至datagridview2。 –

相關問題