我遇到了使用excel工作表更新sql表格的問題。事實是,我正在處理這個小型項目,用戶首先可以通過單擊vb.net應用程序中的按鈕導出或打印帶有StudentNumber,SubjectID,ClassScore,ExamScore的班級列表來優化工作表,然後編輯工作表通過填寫ClassScore和ExamScore,然後通過vb.net將表單上傳回sql。 問題是如何檢查當前的StudentNumber或行是否存在於sql表中,然後更新表或者插入新行。 這是使用SQLBulk複製,只剩下更新SQL表中的所有在vb.net如何使用Excel中的數據從vb.net更新sql表格
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ofd As New OpenFileDialog
If ofd.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then Exit Sub
' Dim dgv As System.Windows.Forms.DataGridView
With ofd
.Filter = "Excel files(*.xls)|*.xls|All files (*.*)|*.*"
.FilterIndex = 1
.Title = "Import data from Excel file"
End With
Dim nme As String = ofd.FileName
Import(nme, dgv)
End Sub
Public Shared Function Import(ByVal FileName As String, ByVal dgv As DataGridView) As Boolean
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=Excel 12.0 Xml;")
'MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\vb.net-informations.xls';Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
MyCommand.TableMappings.Add("Table", "Scores")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)
dgv.DataSource = DtSet.Tables(0)
MyConnection.Close()
Dim expr As String = "SELECT * FROM [Sheet1$]"
Dim SQLconn As New SqlConnection()
Dim ConnString As String = "Data Source=xxxx-PC;Initial Catalog=TryExcel;Persist Security Info=True;User ID=xx;Password=xxxx"
Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, MyConnection)
Dim objDR As OleDbDataReader
SQLconn.ConnectionString = ConnString
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(ConnString)
bulkCopy.DestinationTableName = "Scores"
MyConnection.Open()
objDR = objCmdSelect.ExecuteReader
bulkCopy.WriteToServer(objDR)
objDR.Close()
SQLconn.Close()
End Using
Return True
End Function
Private Shared Function safefilename() As String
Throw New NotImplementedException
End Function
好吧,不太確定我是否能得到它,呃我會仔細看看它,並會給你隨我所得。非常感謝 –
歡迎好友.. –