Главная » 2011»Октябрь»2 » Учимся работать с MS Excel через подключение ADOConnection в Delphi.
13:11
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
В предыдущем посте я рассказывал, как работать с MS Excel из Delphi через ComObj (Comобъект).
В этой статье я расскажу, как подключить таблицу MS Excel через компонент ADOConnection в Delphi. Из данной статьи вы сможете узнать о способах данного подключения. Как загрузить данные из таблицы MS Excel в компонент DBGrid. Как создавать и сохранять записи в таблице MS Excel из Delphi.
И так, приступим…
Запустим Delphi и создадим новое приложение File -> New-> VCL Forms Application – Delphi.
Разместим на форме следующие компоненты:
1. Компонент TADOConnection из вкладки dbGo (ADO);
2. Компонент TADOQuery из вкладки dbGo (ADO);
3. Компонент TDataSource из вкладки Data Access;
4. Компонент TDBGrid из вкладки Data Controls;
5. И два компонента TButton из вкладки Standard.
Далее создадим таблицу MS Excel со следующими полями:
и сохраним ее как 1.xlsx для (MS Excel 2007) или 1.xls для (MS Excel 2003).
Затем настроим компоненты…
Начнем с компонента подключения к базе ADOConnection1. Мы будем подключаться к таблице MS Excel.
В инспекторе объектов для компонента ADOConnection1 выбираем свойство ConnectionString и вписываем туда следующую строку для MS Excel 2007:
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =1.xlsx; Extended Properties ="Excel 12.0 Xml;HDR=YES";
Файл 1.xlsx должен находиться в папке с приложением.
При указании полного пути до файла:
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:\myFolder\myExcel2007file.xlsx; Extended Properties ="Excel 12.0 Xml;HDR=YES";
Если у вас MS Excel 2003 то вписываем следующую строку:
Выбираем «Источник данных компьютера» -- > «Файлы Excel» -- > и нажимаем на пункте дважды левой кнопкой мыши.
Находим наш файл и жмем ОК.
Внимание!!! К сожалению такое подключение возможно только для файлов Excel сохраненных в формате Excel 97-2003(*.xls), поэтому в моем случае выдаст ошибку.
После установки подключения убираем галочка со свойства LoginPromt, чтоб не запрашивал пароль и переходим к настройке компонента ADOQuery1.
Переходим к компоненту DataSource1 и устанавливаем ему свойство DataSet -- > ADOQuery1.
Переходим к компоненту DBGrid1 и устанавливаем ему свойство DataSource--> DataSource1.
После данных настроек, если вы все сделали правильно в DBGrid должны отобразиться поля вашей таблицы. Чтобы изменить размер отображаемых полей в Structure выбираем:
И для всех добавленных полей изменяем свойство DisplayWidth -->20.
Должно получиться следующее:
Внимание!!! Перед запуском на выполнение, необходимо убрать галочки у компонента ADOConnection1 -- >Connected и у компонента ADOQuery --> Active иначе будут сыпаться ошибки, типа не могу подключиться, так как подключение уже используется.
Дело движется к концу. Осталось только написать обработчики событий для кнопок (назовем их "Новая запись" и "Сохранить" соответственно). Начнем…
Для события OnClick кнопки «Сохранить» пишем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Edit;
ADOQuery1.Post;
end;
Для события OnClick кнопки «Новая запись» пишем следующий код:
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery1.Append;
end;
И для события OnCreate формы пишем:
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected:=true;
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$]');
ADOQuery1.Active:=True;
end;
Сохраняем, запускаем на исполнение и видим, что с таблицами MS Excel можно работать также как и с файлами базы данных, но есть одно но, данный провайдер подключения не поддерживает удаление записей.
При написании статьи использовался материал с сайта http://devdelphi.ru/?p=63 , за что автору огромное спасибо!!!
Подскажите, а если у меня книге присутствует график, то он будет выводиться при подключении всей книги целиком или его отдельно выводить надо в дельфи 7?
Наверное поэтому у вас и не работает. Попробуйте создать источник данных. Нажмите кнопку создать и выберите драйвер Excel. Может поможет. У меня нет Delphi XE и пункт Файлы Excel у меня был сразу, поэтому особо помочь я вам не могу.))))))))
С этим разобрался, но пишет теперь "В операции должен быть использован обновляемый запрос", исходники урока работают нормально P.S. Ваш сайт мне очень помог разобраться в написании программ баз данных. Спасибо вам
При сохранении новой записи выдает ошибку "[Microsoft][Драйвер ODBC Excel] В операции должен быть использован обновляемый запрос" Думал я где то накасячел, скачал исходник но и в исходнике та же проблема.
Подскажите как исправить? P.S. Использую Delphi XE2
К сожалению у меня нет Delphi XE2 и протестировать работу на ней я не могу. Но под Delphi 2010, система Windows Vista, MS Office 2007 все работает, единственное, что выдает ошибку при сохранении пустой строки т.к. не сделана соответствующая проверка. Работает ли у вас скомпилированный exe файл из исходников? Его проверял под Windows 7 - все работало. Если не работает - попробуйте на другом компьютере, возможно что-то с системой?)))))))))
Я рад, что вам понравилась. Этот сайт и создавался с целью, чтоб каждый зашедший на него человек, мог понять даже при минимальных знаниях о чем идет речь.
А есть такой вопрос... как подключить 3 листа для 3х разных форм? Если таким методом, то у меня ошибку выдает( и 3 разных книги создавал, все равно не помогает... просто первый раз вожусь с подключением таблиц(