从Excel中将数据插入到SQL DB中

我创build了一个Excel工作表,它执行一些查找来格式化需要插入到另一个表中的数据。 这个Excel工作簿需要给一些用户自由地添加一些新的行,然后需要能够点击“插入数据库”button,并将logging转换并作为新logging插入SQL表中。 我正在使用Excel 2010和SQL Server 2008.我有一个连接到数据库,因为我正在使用它来拉回一些数据,以validation新添加的行,但我不知道如何然后插入数据。

你可以用ADO做很多事情:

Dim cn As New ADODB.Connection ''You should probably change Activeworkbook.Fullname to the ''name of your workbook strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & ActiveWorkbook.FullName _ & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" cn.Open strCon s = "INSERT INTO [ODBC;Description=TEST;DRIVER=SQL Server;" _ & "SERVER=Server;Trusted_Connection=Yes;" _ & "DATABASE=test].SomeTable ( Col1, Col2, Col3, Col4 ) " _ & "SELECT a.Col1, a.Col2, a.Col3, a.Col4 " _ & "FROM [Sheet2$] a " _ & "LEFT JOIN [ODBC;Description=TEST;DRIVER=SQL Server;" _ & "SERVER=Server;Trusted_Connection=Yes;" _ & "DATABASE=test].SomeTable b ON a.Col1 = b.Col1 " _ & "WHERE b.Col1 Is Null" cn.Execute s 

您也可以使用ACE连接: http : //www.connectionstrings.com/或OPENROWSET和SQL Server连接。 在所有情况下,根据您的registry设置( http://forum.lessthandot.com/viewtopic.php?f=17&t=12043&p=59669&hilit=excel#p59669 ),您可能在列中混合使用数据types时遇到问题。

我发现在一个macros中,可以通过添加对“Microsoft ActiveX Data Objects 6.0 Library”的引用来创build一个ADO连接。 在macros中打开连接后,可以创build插入语句并使用connection.Execute(statement)方法执行它:

 Dim item as String = "Insert Into MyTable(ColA,ColB) VALUES('Foo', 'Bar')" Dim thisCon As New ADODB.Connection thiscon.Open("ConnectionString") thisCon.Execute (item) 

在excel中修改数据后,需要生成Update语句,按下“update”button即可执行。 如此一来,将执行更新和插入语句。 然后必须发送一个查询来刷新Excel中的数据。(imho)