Надстройка Excel для переноса данных из листов в базу данных: проблема с путем к файлу - PullRequest
1 голос
/ 14 мая 2009

Я хочу создать надстройку для Excel, которая может читать данные текущих листов, а затем вставлять их в базу данных. Для подключения к базе данных требуется местоположение файла. Поэтому этот подход не может быть применен, так как я должен отправить файл, который я открыл в данный момент, и не могу указать путь к файлу.

Более того, мне нужно, чтобы данные каждого столбца были вставлены в отдельный столбец таблицы в базе данных SQL Server. Любые предложения и код, чтобы помочь?

Ответы [ 2 ]

1 голос
/ 22 мая 2009

Вы можете создать надстройку Excel с Excel, используя VBA. Вам нужно добавить ссылку на объекты данных Microsoft ActiveX (ADO) в редакторе VBA (используя Инструменты -> Ссылки), и тогда вы получите полный доступ к объектам Connection, Command, RecordSet и т.

Если бы я делал это, я бы попросил пользователя указать базу данных / таблицу / столбцы для каждого пакета импорта с помощью формы. Затем я создал бы объект Connection и прошел бы по каждой строке данных, чтобы создать и выполнить команду вставки на основе данных в строке.

Когда вы закончите, у вас есть возможность сохранить готовую книгу в виде файла надстройки Excel (xla), который можно распространить среди других.

Вот пример того, как может выглядеть код вставки:

Dim conn As New Connection
Dim comm As New Command
conn.Open YourConnectionString
Set comm.ActiveConnection = conn
comm.CommandText = "insert <table> (<column1>, <column2>, <column3>, ..., <columnN>)  values (" + <value1> + ", '" + <value2> + "', " + <value3> + ", '" + <valueN>+ "')"
comm.Execute
conn.Close
0 голосов
/ 14 мая 2009

Должно ли это быть сделано в Excel? Это можно сделать с помощью простого приложения ADO.NET, указав поставщика OleDb для Excel и другого для SQL.

* ** 1003 тысяча два * Пример

Есть много статей по технике. Вы можете сделать то же самое с минимальным кодом в службах интеграции SQL Server (SSIS, ранее известный как DTS). Вот старая статья об этом .

Вы также можете сделать это из Excel. С VS2005 вы бы использовали VSTO - Visual Studio Tools for Office; Я думаю, что функция VSTO включена в VS2008 Professional. VS + VSTO (или VS2008) позволяет создавать надстройки для приложений Office, включая Excel. В надстройке вы можете делать все, что угодно в коде, в том числе использовать System.Data.SqlClient для вставки данных в SQL Server.

...