【发布时间】:2019-04-19 04:30:16
【问题描述】:
我需要从 Excel 工作表中导入一些数据,但 OleDbConnection 使用的是 32 位版本,因此无法找到提供程序。我已经使用 64 位向导导入了,一切正常。
已尝试使用以下连接字符串:
Provider=Microsoft.ACE.OLEDB.12.0;
Public Shared Function ExcelToSqlServer() As Integer
Dim ds As New DataSet
Dim da As New OleDbDataAdapter
Dim conn As New OleDbConnection
Dim cnn As New SqlConnection
Dim sqlBC As SqlBulkCopy
Dim myFileDialog As New System.Windows.Forms.OpenFileDialog
Dim xSheet As String = ""
With myFileDialog
.Filter = "Excel Files |*.xlsx"
.Title = "Open File"
.ShowDialog()
End With
If myFileDialog.FileName.ToString <> "" Then
Dim ExcelFile As String = myFileDialog.FileName.ToString
xSheet = "Incidentes"
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" & "data source=" & ExcelFile & "; " & "Extended Properties='Excel 12.0 Xml;HDR=Yes'")
Try
conn.Open()
da = New OleDbDataAdapter("SELECT * FROM [" & xSheet & "$]", conn)
ds = New DataSet
da.Fill(ds)
sqlBC = New SqlBulkCopy(cnn)
sqlBC.DestinationTableName = "Incidentes"
sqlBC.WriteToServer(ds.Tables(0))
conn.Close()
Return 1
Catch ex As Exception
MsgBox("Error: " + ex.ToString, MsgBoxStyle.Information, "Informacion")
conn.Close()
Return -1
End Try
End If
Return -1
End Function
运行此函数时出现以下错误
【问题讨论】:
标签: sql-server vb.net oledb