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

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

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 !!!



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

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

Eropka 01 Oct 2010 в 00:00 #
если изменить путь или №листа то ошибку дает!

если все правельно указать то ниче неделает((
в таблицу никак невыводит!
Eropka 01 Oct 2010 в 00:00 #
черт)
Добрый человек писал:
"
не хватает информации о присвоении свойству DataSource компонента DBGrid1: DBGrid1.DataSource := DataSource1;
"
вот чево нехватало))
Елена 19 Aug 2010 в 00:00 #
Далее я работаю с этим AdoQuery1, из него все пишу в таблицу. Но если поле в Excel не заполнено, ругается программа.Делаю проверку на "" или NULL - не работает.
Оксаночка-Солнышко 27 Jul 2010 в 00:00 #
Проскажите пожалуйста) А как можно жделать так что бы документ этот был не по умолчанию, а чтоб его можно было выбрать? Напрмер каким нибудь компонетом как OpenDialog? может можно как нибудь прописать? или дайте ссылочку
Евгений Бедрин 27 Jul 2010 в 00:00 #
adoconnection1.ConnectionString :=′Provider=Microsoft.Jet.OLEDB.4.0;Data Source=′+
ExtractFilePath(Application.Exename)+′baza.mdb;Mode=ReadWrite;Persist ′ +
′Security Info=False′;
try
adoconnection1.Connected:=true;
showmessage(′с базой соединились успешно′);
except
showmessage(′не палучилося′);
end;

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