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

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

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

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

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

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

    Как видно из рисунка таблица содержит 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 #
    Большое человеческое СПС!!!!!!!!
    Автору РЕСПЕКТ!

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