2016-10-17 62 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数据库)。您可以完全控制指定来源和目的地 –