【发布时间】:2017-03-29 09:08:59
【问题描述】:
大家好,我在构建的项目中遇到问题 我正在尝试使用批量复制将 excel 文件导入 sql server 2016,但出现此错误
“'DAFTAR1$' 不是一个有效的名称。确保它不包含无效字符或标点符号,并且它不是太长”
我认为这段代码有问题 Dim query_excel As String = "SELECT * from [" & file & "$]"
我在另一台电脑上尝试了所有这些代码,它运行良好,但在我的电脑上出现了这个错误,我不知道我做错了什么,我使用的是 Visual Basic 2010 专业版,SQL 管理服务器 2016 和微软办公室 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$”
-
嘿大卫谢谢你的建议,我试着不放 $ 但它仍然给我同样的错误,我想知道这段代码有什么问题 " Select * From ["& File & "$]" 我在另一台电脑上写的所有代码都试过了,效果很好,所以我不知道该怎么做
-
Excel 文件中是否总是只有一个工作表?或者可能是 2 个,但是一个名为“Sheet1$”的空白?
-
每个 excel 文件中只有一张表,所以我的意思是,我有几个 excel 文件需要上传到 sql server 数据库,我还在数据库中创建了这些表并将它们命名为和excel文件一样
-
您是否使用
DataGridView或其他方式查看您正在导入的文件?
标签: vb.net