Delphi уроки - Учимся работать с Excel документами в Delphi

Опубиковано: 27.11.2008 г., автор: , просмотров: 133688

Delphi Уроки: Учимся работать с Excel файлами.

Всем привет! Сегодня наш урок будет посвящен использованию Excel'я в Delphi. А именно я рассажу как вывести табличку из Excel'я в компонент DbGrid.

Итак начинаем.....

Для начала откроем Excel и создадим простенькую табличку (см.рис 1)

excel delphi

Как видно из рисунка таблица содержит 3 столбика: Имя, Фамилия, Должность. Обратите внимание что таблицу я создал на листе с Именем Лист1 (в дальнейшем нам это пригодиться). Так далее, я добавил в неё первую запись (Олег, Иванов, Менеджер). Всё начальные приготовления завершены, осталось только сохранить наш документ, я сохраню его на диске C:\ с именем 2.xls

Теперь открываем Delphi и кидаем на форму 4 компонента: ADOConnection, ADOQuery с закладки ADO, DataSource с закладки Data Access и DBGrid с закладки DataControls. Для того что-бы вывести документ Excel в компонент DbGrid нам нужно с начала подключиться к этому документу, для этих целей будем использовать компонент ADOConnection. Выделяем его и в свойстве ConnectionString пишем вот такой код

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\2.xls;Extended Properties=Excel 8.0;

В Свойстве LoginPromt и Connected установите значение false.

Далее у нас на очереди компонент DataSource, В Свойство DataSet поставте ADOQuery1.
А в компоненте ADOQuery свойство Connection установите на ADOConnection1.

Ну что со связями между компонентами вроде бы разобрались, теперь добавьте на форму 2 Компонента Edit и один компонент Button с закладки Standart. В первом Edit'e будет храниться путь до excel файла,
во втором edit'e мы будем писать SQL запрос, а при нажатии на кнопку программа будет подключаться к Excel файлу и выводить таблицу в компонент DbGrid.

Но для начала нам необходимо создать парочку процедур. Для этого в вверху, после ключевого слова private пишем:

procedure ConnectToExcel;
И нажимаем комбинацию клавиш Ctrl+Shift+C

Delphi автоматически генерирует нам шаблончик для будущей процедуры.

procedure TForm1.ConnectToExcel;
begin


end;
end;

Посмотрите теперь как должна выглядеть эта процедура и допишите не достающие строки.

procedure TForm1.ConnectToExcel;
var strConn: widestring;
begin
strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' +Edit1.Text+ ';' +
'Extended Properties=Excel 8.0;';
AdoConnection1.Connected:=False;
AdoConnection1.ConnectionString:=strConn;
try
AdoConnection1.Open;
except
ShowMessage('Не могу соединиться с Excel книгой, которая расположена по адресу: '+Edit1.Text+' !');
raise;
end;
end;

С помощью этой процедуры мы будем устанавливать соединение между Excel файлом и Нашей программой.

Далее создадим еще одну процедуру, которая будет выполнять SQL запрос и соответственно выводить табличку в компонент DBGrid. Делается это по аналогии, т.е. опять же после ключевого слова private пишем:

procedure FetchData;

И нажимаем комбинацию клавиш Ctrl+Shift+C

Полный листинг процедуры:

procedure TForm1.FetchData;
begin
ConnectToExcel;
AdoQuery1.Close;
AdoQuery1.SQL.Text:=Edit2.Text;
try
AdoQuery1.Open;
except
ShowMessage( 'Не могу выполнить Sql запрос ' + Edit1.Text +'!');
raise;
end;
end;

Двигаемся дальше, создаем обработчик событий OnClick на кнопке.
Между begin ... end пишем имя второй функции: FetchData;

Все запускаем программу, в первом Edit'e прописываем полный путь до нашего excel документа (у меня это C:\2.xls), а во втором Edite пишем SQL запрос на выборку всех полей из таблицы Лист1:

SELECT * FROM [Лист1$]

Жмем на кнопку.., ОПА табличка вывелась в компонент DBGRID

До встречи DelphiExpert.ru !!!



Похожие материалы

Последние из рубрики

Andrey 24 Aug 2023 в 05:04 #
Чтобы "что-то происходило" ещё в свойствах DBGrid указать DataSource
Юрий 18 May 2014 в 17:53 #
В DbGrid указать DataSource -> DataSource1
Павел 16 May 2014 в 22:40 #
У меня что то не получается. Все сделал как надо, потом при нажатии на кнопку в dbgrid ничего не выводит, что делать.
dieder 27 Jan 2014 в 14:24 #
ОГРОМНОЕ СПС
Respect
Roman 14 Nov 2013 в 16:16 #
Большое человеческое СПС!!!!!!!!
Автору РЕСПЕКТ!

ОтменитьДобавить комментарий