2016-09-28 8 views
1

複数のExcelファイルからデータをインポートするDataGridViewがあります。しかし、データをインポートするたびに、以前のデータが上書きされます。次のExcelファイルを前のデータグリッドビューの最後に追加するにはどうすればよいですか?複数のデータソースをdatagridviewに追加するvb.net

If DataGridView1.RowCount > 0 Then 
    MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Work\4pc_test1.xlsx;Extended Properties=Excel 12.0;") 

    'MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fd.FileName & "';Extended Properties=Excel 8.0;") 
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection) 
    MyCommand.TableMappings.Add("Table", "Net-informations.com") 
    DtSet = New System.Data.DataSet 
    MyCommand.Fill(DtSet) 

    'DataGridView1.DataSource = DtSet.Tables(0) 

    Dim tab As DataTable = DtSet.Tables(0) 
    DataGridView1.DataSource = tab 

    MyConnection.Close() 
Else 

    'The below connection allows for the opening of .xls files and .xlsx. The one reamed out below doesnt open up .xls files. 
    MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Work\4pc_test1.xlsx;Extended Properties=Excel 12.0;") 

    'MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fd.FileName & "';Extended Properties=Excel 8.0;") 
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection) 
    MyCommand.TableMappings.Add("Table", "Net-informations.com") 
    DtSet = New System.Data.DataSet 
    MyCommand.Fill(DtSet) 
    DataGridView1.DataSource = DtSet.Tables(0) 

    MyConnection.Close() 
End If 
+0

DGV用に複数のデータソースを持つことはできません。それは私ですか、IfとElseブロックの両方が、同じDataTable変数を持っていることを除いて同じものです。 – Plutonix

+2

何もないですが、16の質問をして18の回答を得ました。 1つしか受け入れずに1回だけ投票した。あなたが有益であることを知っている回答を受け入れると、あなたが好きな回答を見つけるのに役立ちます。 [ツアー]はそれを説明します。ソースが同一であれば、データテーブルに追加することができます。 – Plutonix

答えて

2

あなたは、単に単一DataTable複数回を埋めることができ、行がDataTableこのように追加されます。たとえば、次のように別のExcelファイル内の列の

Try 
    Dim table = New DataTable() 
    Dim connection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=D:\excel1.xlsx;" & _ 
     "Extended Properties=Excel 12.0;" 
    Using adapter As New OleDbDataAdapter("select * from [Sheet1$]", connection) 
     adapter.Fill(table) 
    End Using 
    connection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=D:\excel2.xlsx;" & _ 
     "Extended Properties=Excel 12.0;" 
    Using adapter As New OleDbDataAdapter("select * from [Sheet1$]", connection) 
     adapter.Fill(table) 
    End Using 
    Me.DataGridView1.DataSource = table 
Catch ex As Exception 
    MessageBox.Show(ex.ToString()) 
End Try 

数が異なる可能性がありますが、同じ名前の列がある場合、これらの列のデータは同じタイプである必要があります。

+1

fooがfooカラムに他のfoosで終わることを確かめるために、SQLの欄に必要な列を入力してください。 – Plutonix

+0

@Reza Ahaei、あなたの答えはデータをインポートしますが、新しい古い記録の最後に記録する。たとえば、私の最初のインポートは100レコードで、私の2番目のデータは200です。データテーブルには300レコードが必要です。 – Chrisetiquette

+0

@Chrisetiquetteあなたは300レコードを持っています。 –

関連する問題