| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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оздаем таблицу, т.е. новый лист - путем запуска следующей квери:
Снова переходим в дизайн - ставим на форму 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 таблице выполнять |