你好夥計我遇到了一個我建立的項目的問題 我試圖使用批量導入將excel文件導入到sql server 2016,並且我得到了這個錯誤visual basic 2010,使用批量複製將excel文件導入到我的SQL
「‘DAFTAR1 $’不是一個有效的名稱。請確保它不包括無效字符或標點,它不是太長」
我認爲有這個代碼 昏暗query_excel作爲一個問題String =「SELECT * from [」& file &「$]」
我試過所有這些代碼在另一臺電腦上,它完美的工作,但在我的電腦上它出現了這個錯誤,我不知道我錯了什麼,我使用Visual Basic 2010專業版,SQL管理服務器2016和Microsoft Office 2016
任何人都可以幫我找出代碼有什麼問題嗎?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
TextBox1.Text = OpenFileDialog1.FileName
file = System.IO.Path.GetFileNameWithoutExtension(TextBox1.Text)
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim koneksi_excel As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ace.OLEDB.12.0;Data Source='" & TextBox1.Text & "';Extended Properties=""Excel 12.0 Xml;HDR=YES;""")
koneksi_excel.Open()
Dim query_excel As String = "SELECT * from [" & file & "$]"
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(query_excel, koneksi_excel)
Dim rd As OleDb.OleDbDataReader
rd = cmd.ExecuteReader()
Dim koneksi As New SqlClient.SqlConnection()
Dim koneksidatabase As String = "server=DESKTOP-KJQ8PNO\SQLEXPRESS;database=otto;Integrated Security=True"
koneksi.ConnectionString = koneksidatabase
koneksi.Open()
Dim da As New OleDb.OleDbDataAdapter
Dim ds As New DataSet()
Dim dt As New DataTable
ds.Tables.Add(dt)
da = New OleDb.OleDbDataAdapter(query_excel, koneksi_excel)
da.Fill(dt)
Using bulkcopy As SqlClient.SqlBulkCopy = New SqlClient.SqlBulkCopy(koneksi)
bulkcopy.DestinationTableName = file
bulkcopy.BulkCopyTimeout = 600
bulkcopy.WriteToServer(rd)
rd.Close()
MsgBox("Data uploaded to database", MsgBoxStyle.Information, "Uploaded")
TextBox1.Text = ""
End Using
End Sub
檢查您嘗試導入的工作表的名稱。我的猜測是,它只是被稱爲「Daftar1」,而不是「Daftar1 $」 – David
嘿大衛謝謝你的建議,我試圖不放$,但它仍然給我同樣的錯誤,我不知道這裏有什麼問題代碼「Select * From [」&File&「$]」 我嘗試了所有在另一臺電腦上編寫的代碼,並且工作完美,所以我不知道該怎麼辦 – NickWilliams
是否總是隻有一個工作表Excel文件?或者可能是2,但一個名爲「Sheet1 $」的空白單元? – David