Вставить данные из Excel в базу данных SQL - PullRequest
7 голосов
/ 22 сентября 2010

Я создал лист Excel, в котором выполняется поиск для форматирования данных, которые необходимо вставить в другую таблицу. Эта книга Excel должна быть предоставлена ​​некоторым пользователям, которые могут свободно добавлять новые строки, а затем должны иметь возможность нажать кнопку «Вставить в базу данных» и преобразовать записи и вставить их как новые записи в таблицу SQL. Я использую Excel 2010 и SQL Server 2008. У меня есть подключение к БД, поскольку я использую его для извлечения некоторых данных, чтобы проверить добавление новых строк, но я не уверен, как затем вставить данные обратно .

Ответы [ 3 ]

16 голосов
/ 22 сентября 2010

Вы можете многое сделать с 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. Во всех случаях у вас могут быть проблемы со смешанными типами данных в столбцах, в зависимости от настроек реестра (http://forum.lessthandot.com/viewtopic.php?f=17&t=12043&p=59669&hilit=excel#p59669)

3 голосов
/ 22 сентября 2010

Я обнаружил, что в макросе вы можете создать соединение ADO, добавив ссылку на «Microsoft ActiveX Data Objects 6.0 Library».Открыв соединение в макросе, вы можете создать оператор вставки и выполнить его с помощью метода connection.Execute (оператор):

Dim item as String = "Insert Into MyTable(ColA,ColB) VALUES('Foo', 'Bar')"
Dim thisCon As New ADODB.Connection
thiscon.Open("ConnectionString")
thisCon.Execute (item)
0 голосов
/ 22 сентября 2010

После изменения данных в excel необходимо сгенерировать операторы Update, которые будут выполнены нажатием кнопки «обновить».В результате будут выполнены инструкции Update и Insert.Затем нужно отправить запрос на обновление данных в Excel. (Imho)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...