Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Можно ли подключиться к экселю через адо или бде


Автор: dikiy 17.7.2007, 08:16
Можно ли подключиться к экселю через адо или бде, а не создавать каждый раз аксесовскую базу и подключать туда экселевские таблицы? я попробовал создать в источниках данных одбц создать псевдоним, все создается в дельфи к этой базе вроде подключаюсь, но таблицу не вижу в чем может быть причина?

Автор: Rodman 17.7.2007, 08:25
к Excel?!

что значит подключится - это же не СУБД?!

Автор: dikiy 17.7.2007, 08:37
Да знаю чо это табличный процессор просто хотелось миновать путь создать базу аксес->прицепить туда таблицу эксель такое в принципе возможно?

Автор: Rodman 17.7.2007, 08:42
Само собой ты можешь создать таблицу (или таблицы на разных листах). но какой смысл, если потом возникнут сложности с выборкой данных!

Автор: dikiy 17.7.2007, 08:57
ну таблицы я не создаю их присылают и не на разных листах а в разных файлах, а потом просят данные нв основании этих таблиц приходится их объединять через дельфи короче геморрой ну если сразу экселем пользоваться нельзя будем по старинке пожключать их через аксес

Автор: Rodman 17.7.2007, 09:31
все равно я не понял сути задачи!

Добавлено через 13 минут и 10 секунд
вот нашел в DRKB

Чтобы использовать только стандартные компоненты давайте попробуем работать с Excel через ADO. Это не самый быстрый и далеко не первый по возможностям метод (DAO работает на порядок быстрее и предоставляет куда больше возможностей), но ADO компоненты входят в стандартную поставку 5 и 6 Дельфи. Итак заходим в Панель управления Windows, идем в свойства ODBC, делаем DSN используя Excel драйвер, не забываем указать в свойствах на файл Excel. Закрываем ODBC, открываем Дельфи. Ставим на форму ADOConnection. Идем в ConnectionString - строим строку подключения - надо выбрать только ODBC провайдер и на следующей вкладке указать сделанный DSN, остальные опции в большинстве случаев можно оставить как есть. Строка получена. Кстати ее можно вообще упростить до вида: "DSN=MyDsn". Теперь вам доступны листы файла как таблицы а весь файл как база данных. Подключаем ADOQuery к ADOConnection. Cоздаем таблицу, т.е. новый лист - путем запуска следующей квери:

Код

Create Table MyTable1 (
Field1 varchar(20),
Field2 varchar(10) )


Снова переходим в дизайн - ставим на форму ADOTable, указываем как Connection наш компонент с ADOConnection, теперь если кликнуть на свойстве TableName - вы сможете увидеть в списке сделанную нами таблицу "MyTable1". Соедините таблицу с DBGrid - убедитесь что работа с таблицей в Excel мало отличается от работы с другими базами данных. 

Автор: Akella 17.7.2007, 13:34
можно через ADO (ODBC), но будет очень глючно и медленно

Добавлено через 13 секунд
в DRKB где-то был пример

Автор: mutex 18.7.2007, 18:27
Попробуйте ADOConnection со строкой соединения, примерно так:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Tests\test1.xls;Extended Properties=Excel 8.0;

Учтите, что Excel-файл должен содержать только таблицу, т.е. выбросьте всю текстовую шелуху.

Автор: Marduk 30.7.2007, 10:57
Через ADO можно как в посте mutex, но таблица не должна быть открыта в экселе, т.к. для доступа к xsl файлам используется монопольный доступ. А если совместно с приведенным AdoConnection использовать ADODataSet, то будет возможно и sql запросы к excel таблице выполнять

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)