VB.NET通过代码将Excel文档加载到SQL Server数据库表中

时间:2015-12-22 00:09:03

标签: sql sql-server database vb.net excel

我想将Excel文档加载到我的VB.NET项目中,然后将Excel文档中的所有数据加载到我的SQL Server数据库中。

SQL Server TCustomers中的表名,它包含以下列:

CustomerID, FirstName, LastName, OrderID

这是我的数据在datagridview中的样子:

CustomerID   FirstName   LastName   OrderID
01           Jack        Collin       100

我的Excel表格以相同的方式设置了数据。

Cell:  A1 ---- B1 ---- C1 ---- D1
CustomerID----FirstName-LastName-OrderID
 -02 ---- Mike ---- Angel ---- 200

我尝试使用以下代码来完成此任务,但它没有做任何事情:

    Dim ExcelConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Spreadsheet.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes""")
    ExcelConnection.Open()

    Dim expr As String = "SELECT * FROM [Sheet1$]"

    Dim objCmdSelect As OleDbCommand = New OleDbCommand(expr, ExcelConnection)
    Dim objDataR As OleDbDataReader

    Dim SQLconne As New SqlConnection()
    Dim ConnString As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\MyDatabase.mdf;Integrated Security=True"
    SQLconne.ConnectionString = ConnString
    SQLconne.Open()

    Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLconne)
        bulkCopy.DestinationTableName = "TCustomers"

        Try
            objDataR = objCmdSelect.ExecuteReader
            bulkCopy.WriteToServer(objDataR)
            objDataR.Close()
            SQLconne.Close()

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Using

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

之前我使用过SqlBulkCopy对象并遇到了同样的问题。

尝试明确设置列映射。它在我做的时候起作用了。

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.columnmappings%28v=vs.110%29.aspx

答案 1 :(得分:0)

连接字符串中另一次IMEX = 1。

看到这个问题:

SqlBulkCopy from Spreadsheet