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 数据库表中的主要内容,如果未能解决你的问题,请参考以下文章