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



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

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

Артём 04 Dec 2011 в 00:00 #
А как импортировать данные из БД в шаблон Excel с именованным диапазоном?
паша 14 Oct 2011 в 00:00 #
ааа.....уже не знаю че делать все перепробовал!!!в коде ошибок нет!!!в первый edit задаю путь,во второй пишу SELECT * FROM [Лист1$]!Нажимаю на кнопку и все 0 эмоций,че делать пробовал active изменить на trye в ADOQuery тож 0((((
Паша 13 Oct 2011 в 00:00 #
Подскажите пож.че надо делать все прописал вроде бы все работает запускаю прописываю в Edit1 путь, а вот после того как во второй Edit написал SELECT * FROM [Лист1$],жму button он выводит ошибку на самом интересном:project project1.exe raised exception class EOleException with message ′объект лист1$′не найден ядром базы данных Microsoft Jet.Проверьте существование объекта и правильность указания пути!!!Хотя объект существует и имя я указал правильное с флешки со своей именно там он и находится
Galia 12 Oct 2011 в 00:00 #
А не проще создать файл Exsel(менять данные как хочешь и сохранять их в Exsele)и открывать его внутри Delphi c помощью командой Message Show _________(указать путь)
Мари 18 Sep 2011 в 00:00 #
Можно еще проще, особенно для тех, у кого Грид выдает пустые строки. Добавляем теже компоненты, настройки теже, на показ или активацию формы, или на кнопку - не важно, пишем
begin
AdoConnection1.Connected:=True;
AdoQuery1.Active:=true;
end;
, можно встевить и сообщения об ошибке, если нужно.
И все заработало. Сама долго парилась.

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