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

Posted

技术标签:

【中文标题】VB.NET 通过代码将 Excel 文档加载到 SQL Server 数据库表中【英文标题】:VB.NET load Excel document into SQL Server database table via code 【发布时间】:2015-12-22 00:09:02 【问题描述】:

我想将 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

感谢任何帮助。

【问题讨论】:

【参考方案1】:

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

尝试明确设置列映射。当我这样做时它起作用了。

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

【讨论】:

谢谢,我会调查的。【参考方案2】:

连接字符串中的另一个 IMEX=1 起作用了。

看到这个问题:

SqlBulkCopy from Spreadsheet

【讨论】:

以上是关于VB.NET 通过代码将 Excel 文档加载到 SQL Server 数据库表中的主要内容,如果未能解决你的问题,请参考以下文章

C#/VB.NET 获取Excel中的表单控件

C#/VB.NET 如何在 Excel 中添加水印

vb.net制作的Excel文件 未捕获通过反射调用的方法而引发的异常

将数据从 Excel 复制到 SQL 数据库 VB.NET

将特定数据从excel导入到datagrid vb.net

VB.net中如何嵌套EXCEL?