Размещаем на форме компонент кнопку
TButton из вкладки
Standard. Назовем ее Экспорт.
Добавим компонент
TADOConnection и
TADOQuery из вкладки
dbGo (ADO).
В инспекторе объектов для компонента
ADOConnection1 выбираем свойство
ConnectionString и вписываем туда следующую строку для
MS Excel 2007:
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =2.xlsx; Extended Properties ="Excel 12.0 Xml;HDR=YES";
Файл
2.xlsx должен находиться в папке с приложением.
При указании полного пути до файла:
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:\myFolder\myExcel2007file.xlsx; Extended Properties ="Excel 12.0 Xml;HDR=YES";
Если у вас
MS Excel 2003 то вписываем следующую строку:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=2.xls;Extended Properties=Excel 8.0;
Файл
2.xls должен находиться в папке с приложением.
Другие способы подключение смотрите в предыдущем посту.После установки подключения убираем, галочку со
свойства LoginPromt, чтоб не запрашивал пароль при подключении.
Перед запуском на выполнение, необходимо убрать галочки у компонента
ADOConnection1 -- >Connected и у компонента
ADOQuery --> Active иначе будут сыпаться ошибки, типа не могу подключиться, так как подключение уже используется.
Далее для события
OnClick кнопки «Экспорт» пишем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into t1 IN bd.mdb select * from [Лист1$]');
ADOQuery1.ExecSQL;
end;
А для
события OnCreate формы пишем:
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected:=true;
end;
Сохраняем, запускаем на выполнение и проверяем содержимое базы данных.
Теперь немножко по структуре запроса
'insert into t1 IN bd.mdb select * from [Лист1$]'INSERT INTO – означает, что запрос будет на добавление записей;
t1 - таблица базы, в которую будем добавлять записи.
IN путь к базе с именем базы. Если база расположена в папке с приложением, достаточно указать только имя базы данных.
select * - означает, что выбираем все записи;
from [Лист1$] – выбирать будем из таблицы
MS Excel Лист1.
И еще
пример использования запроса
INSERT INTO на добавление новой записи в таблицу:
INSERT INTO users (login, pass) values('TestUser', '123456') При добавлении записи вначале идёт команда
"INSERT INTO", затем название таблицы, в которую мы вставляем запись. Далее идёт в круглых скобках названия полей, которые мы хотим заполнить. А затем в круглых скобках после слова
"values" начинаем перечислять значения тех полей, которые мы выбрали. После выполнения этого запроса в нашей таблице появится новая запись.
В статье использованы материалы с сайта
http://devdelphi.ru/?p=90 , там же можно найти более сложный вариант конвертации данных из
таблицы MS Ecxel в базу данных MS Access а также другие статьи по работе с базой данных.