Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252

Создание листа в Excel через ADOQuery

17.05.2012, 11:43. Показов 4822. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как создать (добавить) новый лист в Excel через ADOQuery???
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2012, 11:43
Ответы с готовыми решениями:

Вывод отчета из Delphi в Excel через ADOQuery
Ребятки, помогите пожалуйста, может я тупой просто, но нужно вывести отчет из Delphi в Excel из запроса в ADOQuery Запрос SQLSELECT...

Как задать соответствие одних значений, одного листа Excel, значениям другого листа Excel
Есть лист Excel ,значения в нем постоянны и находятся на одном месте (в одном столбце и в одной строчке). Другие значения в этом же листе...

Создание файла из листа Excel
Возникла необходимость создавать файлы с разными названиями из шаблонного листа. Знаю как это сделать обычным способом, но немного длинный...

21
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.05.2012, 12:33
http://wladm.narod.ru/Borland/excel.html
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 12:55  [ТС]
конечно я понимаю, там все прекрасно, но вот только мне щас это не подходит. Т.к. я начал через ADO все делать. А разбирать Ole времени нет

Добавлено через 15 минут
или может у кого-то есть пример как создать лист в существующей книге tests.xls???
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 13:14
PodOnoK, хм... Никогда таким извращением не занимался, но думаю, что ничего сложного:


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

SQL
1
2
3
4
5
SQL:
 
    CREATE TABLE MyTable1 (
     Field1 VARCHAR(20),
     Field2 VARCHAR(10)  )
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 13:38  [ТС]
Пишет:
Не возможно изменение структуры таблицы MyTable1. База данных доступна только для чтения...
Добавлено через 13 минут
Это называется полез туда не зная куда))
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 13:45
PodOnoK,
Цитата Сообщение от PodOnoK Посмотреть сообщение
Это называется полез туда не зная куда))
Разберемся!

Источники данных (ODBC) - выбираете свой источник - настройка - параметры - снимаете галочку с "только чтение".
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 14:37  [ТС]
Так, надо все с начала... а то чтот капец полный.
Подключаюсь к эксель так:
C++
1
2
3
ADOConnection2->ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID="";Data Source="+
            ExtractFilePath(ParamStr(0)) + "//data//tests.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
        ADOConnection2->Connected=true;
открываю лист так:
C++
1
2
3
4
5
6
7
void __fastcall Tdatabase::Open2Param(AnsiString Param)
{
//откр лист эксель
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("Select * From [" + Param +"$]");
    ADOQuery2->Active=true;
}
создать пытался так:
C++
1
2
ADOQuery2->SQL->Add("Create Table MyTable1 (Field1 varchar(20),Field2 varchar(10) INSERT INTO MyTable1 VALUES (sdsd, sdfsdf)");
    ADOQuery2->ExecSQL();
и так:
C++
1
ADOConnection2->Execute("Create Table [MyTable1$] (Field1 varchar(20),Field2 varchar(10)  )");
В первом случае ошибки нет. но листа тож нет.
А во втором случае типо только для чтения говорит...
И ставил режим записи/чтения тож не помогло...
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 15:06
PodOnoK,
Цитата Сообщение от PodOnoK Посмотреть сообщение
Provider=Microsoft.Jet.OLEDB.4.0
Так попробуй ODBC, а не Jet.
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 15:15  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Так попробуй ODBC, а не Jet.
а как создать такое подключение?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 15:50
PodOnoK, Вы же уже сделали его. Вам осталось только выбрать в билдере из списка провайдеров "Microsoft OLE DB Provider for ODBC Drivers", а не Jet(в настройке ADOConnection). Ну или либо в теле программы прописать данного провайдера на ConnectionString, как Вы делаете.

Понятно или надо заскриншотить?
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 18:03  [ТС]
Пишет - слишком длинное название источника данных
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 19:04
PodOnoK, чудеса... У меня почему-то все получилось.

Вы для начала создайте ConnectionString через мастер:

1) Выбирайте ADOConnection1.
2) В свойствах щелкаете на "..." в свойстве ConnectionString
3) Build
4) Вкладка "Поставщик данных" - выбираете там "Microsoft OLE DB Provider for ODBC Drivers"
5) Вкладка "Соединение" - "Использовать имя источника данных" - из выпадающего списка выбираете, то что Вы ранее создали.
6) ОК.

Усе.
Потом смотрите, каким образом сформировалась строка (она будет в свойстве ConnectionString) и от нее уже пляшите.
1
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 21:25  [ТС]
Мож скинуть эту строку?

Добавлено через 8 минут
Работает только вставка и редактирование полей))) Та вставка и то криво работает. Добавляет черти куда от конца записей. Но вот лист не могу созлать пишет ошибка синтаксиса креатэ

Добавлено через 5 минут
С джетом и это делать не хотело))
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 21:27
PodOnoK, у меня вот такая вышла:
C++
1
Provider=MSDASQL.1;Persist Security Info=False;Data Source=new;
Но только я не уверен, как создавать в таком случае динамический Дата Соурс... Там указывается имя собственного источника данных (у меня тут это "new"), который привязан к конкретной БД (в данном случае к файлу xls) - и путь там к этой БД статичный...

Цитата Сообщение от PodOnoK Посмотреть сообщение
Но вот лист не могу созлать пишет ошибка синтаксиса креатэ
Код покажите.
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 21:36  [ТС]
C++
1
2
ADOQuery2->SQL->Add("Create Table [MyTable1$] (Field1 varchar(20),Field2 varchar(10) INSERT INTO [MyTable1$] VALUES (sdsd, sdfsdf)");
ADOQuery2->ExecSQL();
Пытался так. Но я в SQL таблицы создавать не умею - это первый раз пытаюсь)))
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 21:41
PodOnoK,
(Field1 varchar(20),Field2 varchar(10)) - это во-первых
Во-вторых, распределите эти запросы по отдельности.
1
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 21:44  [ТС]
MyTable1 - это во вторых и последних
Все работает норм!
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 21:46
PodOnoK, ну и замечательно.

Надо как-то решить вопрос с относительным путем к xls...
0
19 / 16 / 1
Регистрация: 10.01.2010
Сообщений: 252
17.05.2012, 21:47  [ТС]
C++
1
2
ADOQuery2->SQL->Add("Create Table MyTable1 (Field1 varchar(20),Field2 varchar(10))");
ADOQuery2->ExecSQL();
конечный вариант

Добавлено через 1 минуту
Цитата Сообщение от The_Immortal Посмотреть сообщение
Надо как-то решить вопрос с относительным путем к xls...
Не понял?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 21:53
Цитата Сообщение от PodOnoK Посмотреть сообщение
Не понял?
Ну вы же ранее как определяли коннект строку?

C++
1
2
ADOConnection2->ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID="";Data Source="+
            ExtractFilePath(ParamStr(0)) + ...
ExtractFilePath(ParamStr(0)) - сейчас это не прокатит, т.к. мы не можем обращаться к конкретному файлу, как в случае с Access (mdb).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2012, 21:53
Помогаю со студенческими работами здесь

Создание листа в рабочей книге Excel
Мне надо экспортировать данные из запроса в один экселевский файл, причём каждую запись на новый лист. Как это сделать? В начале...

SheetJS создание нового листа (EXCEL)
Нужно создать новый лист в книге(если это возможно), сама книга создаеться так: var ws = XLSX.utils.aoa_to_sheet(ws_data); ...

Excel 2003. Создание шаблона листа
Возможно ли в Excel 2003 создать шаблон не книги, а конкретного ее листа, чтобы можно было в уже созданную книгу вставлять этот лист?

Работа с Excel. Создание листа в книге по шаблону
Доброго времени суток. Прошу помочь с вопросом: Есть некоторая книга Ecxel из 2-х листов (а и b) с определенным форматированием....

Создание второго листа Excel после первого?
Прошу помощи как сделать правильно. Создаю документ Excel, соответствено сразу же вместе с книгой создается и лист, который становится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru