Среда, 22.11.2017, 01:55
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

Меню сайта
Категории раздела
Delphi [12]
Материалы, связанные с программирование на Delphi
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


















Тиц
Главная » 2011 » Октябрь » 2 » Учимся работать с MS Excel через подключение ADOConnection в Delphi.
13:11
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
Учимся работать с 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 через подключение ADOConnection в Delphi.
 
Далее создадим таблицу  MS Excel со следующими полями:
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
и сохраним ее как 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 то вписываем  следующую строку:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties=Excel 8.0;

Файл 1.xls должен находиться в папке с приложением.

Также можно подключиться через мастера подключения, для этого нажимаем:
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
выбираем «Использовать строку подключения» -> Сборка…
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
Выбираем «Источник данных компьютера» -- > «Файлы Excel» -- > и нажимаем на пункте дважды левой кнопкой мыши.
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
Находим наш файл и жмем ОК.

Внимание!!! К сожалению такое подключение возможно только для файлов Excel сохраненных в формате Excel 97-2003 (*.xls), поэтому в моем случае выдаст ошибку.

После установки подключения убираем галочка со свойства LoginPromt, чтоб не запрашивал пароль и переходим к настройке компонента ADOQuery1.

Свойство Connection устанавливаем ADOConnection1;
Свойство SQL --> TString --> пишем запрос  SELECT * FROM [Лист1$] ;
Свойство Active--> True.

Переходим к компоненту DataSource1 и устанавливаем ему свойство DataSet -- > ADOQuery1.
Переходим к компоненту DBGrid1 и устанавливаем ему свойство DataSource--> DataSource1.
После данных настроек, если вы все сделали правильно в DBGrid должны отобразиться поля вашей таблицы. Чтобы изменить размер отображаемых полей в Structure выбираем:
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
И для всех добавленных полей изменяем свойство DisplayWidth -->20.
Должно получиться следующее:
 
Учимся работать с MS Excel через подключение ADOConnection в Delphi.
 
Внимание!!! Перед запуском на выполнение, необходимо убрать галочки у компонента 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 , за что автору огромное спасибо!!!
 
Спасибо за внимание.

Скачать исходники к статье можно здесь.

Другие статьи по работе с MS Excel:


Работа с EXCEL из Delphi.

Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.




 
Категория: Delphi | Просмотров: 27368 | Добавил: xaramamburu | Рейтинг: 5.0/2
Всего комментариев: 11
11  
Подскажите, а если у меня  книге присутствует график,  то он будет выводиться при подключении всей книги целиком или его отдельно выводить надо в дельфи 7?

7  
Здраствуйте, у меня в источниках данных компьютера нет пункта Файлы Excel, использую delphi XE

9  
Наверное поэтому у вас и не работает. Попробуйте создать источник данных. Нажмите кнопку создать и выберите драйвер Excel. Может поможет. У меня нет Delphi XE и пункт Файлы Excel у меня был сразу, поэтому особо помочь я вам не могу.))))))))

10  
С этим разобрался, но пишет теперь "В операции должен быть использован обновляемый запрос", исходники урока работают нормально
P.S. Ваш сайт мне очень помог разобраться в написании программ баз данных. Спасибо вам smile

5  
При сохранении новой записи выдает ошибку "[Microsoft][Драйвер ODBC Excel] В операции должен быть использован обновляемый запрос"
Думал я где то накасячел, скачал исходник но и в исходнике та же проблема.

Подскажите как исправить?
P.S. Использую Delphi XE2

6  
К сожалению у меня нет Delphi XE2 и протестировать работу на ней я не могу. Но под Delphi 2010, система Windows Vista, MS Office 2007 все работает, единственное, что выдает ошибку при сохранении пустой строки т.к. не сделана соответствующая проверка. Работает ли у вас скомпилированный exe файл из исходников? Его проверял под Windows 7 - все работало. Если не работает - попробуйте на другом компьютере, возможно что-то с системой?)))))))))

8  
У меня такая же проблема....однако в исходниках все работает

1  
Огромное спасибо вам за труд человеческий! Более подробной информации кроме как у вас я нигде не находил! Спасибо! Все работает)

2  
Я рад, что вам понравилась. Этот сайт и создавался с целью, чтоб каждый зашедший на него человек, мог понять даже при минимальных знаниях о чем идет речь.

3  
А есть такой вопрос... как подключить 3 листа для 3х разных форм? Если таким методом, то у меня ошибку выдает( и 3 разных книги создавал, все равно не помогает... просто первый раз вожусь с подключением таблиц(

4  
Ура! Разобрался!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Календарь
«  Октябрь 2011  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 532
Уголок общения



Copyright MyCorp © 2017Конструктор сайтов - uCoz