Получить доступ, отображение и
редактирование данных Excel возможно так же при помощи технологии ADO (ADO –
ActiveX Data Object)
и Delphi.
Применение технологии ADO позволяет
осуществлять доступ к данным таблицы Excel, что по сравнению с ранее описанной технологией на базе OLE производится
быстрее и эффективнее в смысле обмена данными, но не редактирования страниц.
В данном разделе будут описаны
подробные шаги такого доступа, а так же возможные ошибки и пути их устранения,
которые могут возникнуть в процессе настройки и работы.
Итак, необходимо решить следующие задачи:
·
получить методы передачи данных между Excel<->
Delphi при помощи ADO;
·
редактирование страницы Excel;
·
получение данных из Excel. Как связать таблицу
данных с WorkBook Excel;
·
определение типов полей (колонок) в Excel
странице;
·
передача данных из Delphi приложения в Excel.
Подключение к MS Excel
При работе с Excel через ADO происходит
обмен данных по аналогии с таблицей из базы данных. Для подключения необходимо
использовать компонент AdoConnection и свойство connection string.
Строка подключения в данном свойстве зависит от версии Excel, формата данных и для формата .xls будет выглядеть следующим
образом:
strConn:='Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source=' +'MyFile.xls '+ ';' +
'Extended Properties=Excel 8.0;';
Процедуру подключения к выбранному файлу можно реализовать
следующим образом:
procedure TForm1.ConnectToExcel;
var strConn :
widestring;
begin
strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' + FileListBox1.FileName + ';' +
'Extended
Properties=Excel 8.0;';
AdoConnection1.Connected:=False;
AdoConnection1.ConnectionString:=strConn;
try
AdoConnection1.Open;
AdoConnection1.GetTableNames(ComboBox1.Items,True);
except
ShowMessage('Не получается подключиться к файлу ' +
FileListBox1.FileName);
raise;
end;
end;(*ConnectToExcel*)
При этом имена страниц книги помещаются в компонент Combobox1.
Управление данными
Выборка данных происходит на основе SQL запроса:
Sheet1 – имя страницы для
выборки.
Проверка подключения к
таблице с данными и выборку можно произвести при помощи TadoQuery
if not AdoConnection1.Connected then
ConnectToExcel;
AdoQuery1.Close;
AdoQuery1.SQL.Text:=Edit1.Text;
try
AdoQuery1.Open;
except
ShowMessage('Ошибка!');
raise;
end;
При этом доступ к данным для чтения и записи будет осуществляться
стандартным образом. В следующем программном коде сначала выбирается первая
запись, затем значение второго по счету поля заносится в Edit3, после чего происходит редактирование
полученного значения с записью в файл Excel.
Имя поля при этом содержится в первой строке таблицы.
ADOQuery1.First;
Edit2.Text:=ADOQuery1.FieldByName(ADOQuery1.Fields[1].FieldName).AsString;
ADOQuery1.Edit;
ADOQuery1.FieldByName(ADOQuery1.Fields[1].FieldName).AsString:=Edit2.Text+'!';
ADOQuery1.Post;
Таким образом технология ADO позволяет гибко
настраивать подключение к файлам Excel,
производить обмен данными по аналогии с таблицами баз данных.
|