2016-10-17 63 views
1

我有一個DataGrid我充滿了從DataSet數據。 DataSet從Excel文件中獲取數據,其中OpenFileDialog。我想將這些數據插入到我的SQL Server Express表中。我怎樣才能做到這一點?數據集或數據網格,以SQL Server數據庫表

代碼與我填的是DataGrid

private void btnOpen_Click_1(object sender, RoutedEventArgs e) 
{ 
    OpenFileDialog openfile = new OpenFileDialog(); 
    openfile.DefaultExt = ".xlsx"; 
    openfile.Filter = "(.xlsx)|*.xlsx"; 

    //openfile.ShowDialog(); 

    var browsefile = openfile.ShowDialog(); 

    if (browsefile == true) 
    { 
     txtFilePath.Text = openfile.FileName; 
     FileStream stream = File.Open(txtFilePath.Text, FileMode.Open, FileAccess.Read); 

     Excel.IExcelDataReader excelReader = Excel.ExcelReaderFactory.CreateOpenXmlReader(stream); 
     excelReader.IsFirstRowAsColumnNames = true; 

     DataSet resultexc = excelReader.AsDataSet(); 
     dtGrid.ItemsSource = resultexc.Tables[0].DefaultView; 
     excelReader.Close(); 
    } 
} 

我已經看到了一些教程,但我不理解他們。謝謝您的幫助!

+1

您可以使用批量插入(確保表結構相同)請參閱:https://msdn.microsoft.com/en-us/library/ms188365.aspx – rach

+0

檢查.net [SqlBulkCopy類](https:/ /msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx)如果它適合您的要求 – ASh

回答

0

DataSet對象包含Tables屬性。按照他們在文檔中提供的示例,您應該能夠創建SqlCommand以適當地更新您的SQL Server表。

此選項可以更好地控制您插入哪些數據,並且在源數據與目標不一致時提供靈活性,如BULK INSERTSqlBulkCopy所要求的那樣。

+0

如果我完全理解這一點,這可以幫助我填充SQL數據庫中的數據到'DataSet.Tables'。我想要這個反面。 – vlaszlo

+0

@vlaszlo我的答案建議遍歷源(DataSet)中的表 - >列 - >行,以更新或插入新的數據到目標(SQL數據庫)。您可以完全控制指定來源和目的地 –