Загрузка данных из файла Excel в таблицу SQL Server в vb.net win app
Привет,
Я хочу загрузить данные из файла excel в существующую таблицу SQL Server 2005.
Я попытался сделать это следующим образом, но это не обновление.
1. Чтение данных из Excel файла в набор данных.
2. считывание данных из таблицы Sql Server в набор данных.
3.объедините оба набора данных.
4. обновление с помощью адаптера данных.
Когда я пытаюсь назначить объединенный набор данных сетке, я не вижу изменений, но когда я вижу табличные данные, я не вижу обновлений.
информация о версии:
SQL Server 2005
Visual Studio 2005 .NET Framework 2.0
Ниже приведен код.
UploadForecastFile() Private Sub UploadForecastFile() 'read data from excel file ReadExcelFile() 'read data from sql server table GetExistingForecast() 'set composite primary key for the data table of sql server data dsForecast.Tables("Forecast").PrimaryKey = New DataColumn() {dsForecast.Tables(0).Columns("Customer"), dsForecast.Tables(0).Columns("Salesman"), dsForecast.Tables(0).Columns("Product"), dsForecast.Tables(0).Columns("Year")} dsExcelForecast.Tables(0).PrimaryKey = New DataColumn() {dsExcelForecast.Tables(0).Columns("Customer"), dsExcelForecast.Tables(0).Columns("Salesman"), dsExcelForecast.Tables(0).Columns("Product"), dsExcelForecast.Tables(0).Columns("Year")} 'Merge excel data with sql server data dsFinal.Merge(dsForecast) dsFinal.AcceptChanges() dsFinal.Merge(dsExcelForecast) dsFinal.AcceptChanges() daMain.Update(dsFinal.Tables(0)) daMain.AcceptChanges() MsgBox("Forecast updated") dgvModifiedForecast.DataSource = dsFinal End Sub Private Sub ReadExcelFile() Dim strConnectionString As String Dim FileName As String FileName = txtFileName.Text strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & FileName & ";" & "Extended Properties=Excel 12.0;" Dim conn As OleDbConnection = New OleDbConnection(strConnectionString) Dim da As OleDbDataAdapter = New OleDbDataAdapter() Dim cmd As OleDbCommand = New OleDbCommand() cmd.Connection = conn cmd.CommandText = "SELECT * FROM [Sheet1$]" da.SelectCommand = cmd Try da.Fill(dsExcelForecast, "sheet1") Me.dgvModifiedForecast.DataSource = dsExcelForecast Me.dgvModifiedForecast.DataMember = "sheet1" Catch e1 As Exception MessageBox.Show(e1.Message) MessageBox.Show("Import Failed, correct Column name in the sheet!") End Try End Sub Private Sub GetExistingForecast() Dim conn As New SqlConnection(connectionString) Dim cmd As New SqlCommand conn.Open() cmd.CommandText = "GetCompleteForecast" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = conn daMain = New SqlDataAdapter(cmd) daMain.Fill(dsForecast, "Forecast") End Sub
AndrewCharlz
используйте массовую вставку это была бы лучшая идея для выполнения такого рода операций
Uma Kameswari
Это требование руководства. Они не хотят зависеть от ИТ-отдела для загрузки. Им нужно было приложение, в котором они могли бы выбрать файл excel и по щелчку кнопки он должен был обновиться в базе данных. Это не одноразовая работа. Они регулярно вносят изменения в существующие данные в excel, а затем обновляют их в таблицу sql.
AndrewCharlz
sqlbulk встроен в dotnet ограничителя пожалуйста, проверьте, как использовать его в УР приложение
AndrewCharlz
вы можете использовать его как в интернете, так и в winform