从Excel文件创建表

时间:2018-03-27 07:21:50

标签: sql excel vb.net

我正在尝试从用户上传的Excel文件中创建数据库中的临时表。我无法理解问题出在哪里以及为什么Visual Studio会抛出异常。

代码

  Private Sub Excel_Load(ByVal filePath As String)
    Dim myConn As SqlConnection
    Dim myCmd As SqlCommand
    Dim sqlCmd As String

    Dim filename As String = Path.GetFileNameWithoutExtension(filePath)

    'Setting up Connection'
    myConn = New SqlConnection("Server=*****;Database=*****;User ID=*****;Password=*****;Integrated Security=SSPI;")
    myConn.Open()

    'Create table'
    sqlCmd = "CREATE TABLE XlsTemp AS (SELECT * FROM EXCELLINK [" & filename & "$])"

    'Execute Query'
    myCmd = myConn.CreateCommand()
    myCmd.CommandText = sqlCmd
    myCmd.ExecuteNonQuery()
    myConn.Close()
End Sub

异常

  

SqlException:对象名称“EXCELLINK”无效。

Peu_UNRAE 是我的Excel文件。

1 个答案:

答案 0 :(得分:1)

最后,我提出了以下解决方案:

  Dim MyConnection As System.Data.OleDb.OleDbConnection
  Dim fileExcelType As String

  //Get the file extension in order to use the propper provider
  If IO.Path.GetExtension(fileExcel.ToUpper) = ".XLS" Then
     fileExcelType = "Excel 8.0"
     MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & fileExcel & "';Extended Properties=" & fileExcelType & ";")
  Else
     fileExcelType = "Excel 12.0"
     MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & fileExcel & "';Extended Properties=" & fileExcelType & ";")
  End If

  //Opening excel connection
  MyConnection.Open()

  Dim myTableName = MyConnection.GetSchema("Tables").Rows(0)("TABLE_NAME")
  Dim MyCommand As OleDbDataAdapter = New OleDbDataAdapter(String.Format("SELECT * FROM [{0}] ", myTableName), MyConnection)
  MyCommand.TableMappings.Add("Table", "    ")
  MyCommand.Fill(dt)

  //Closing connection
  MyConnection.Close()

备注:

我使用//进行评论,因为标准'在StackOverflow上出现了一些问题