![]() |
|
|
![]()
|
|
| Demo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Здравствуйте, уважаемые программисты!
У меня возникла необходимость данные из DBGrid (которые формируются при помощи запроса) передать в Excel. Пишу следующий код, Excel загружается, имя листу присваивается, но почему-то в ячейки вместо данных из Грида вставляются данные, которые были копированы ранее (притом неважно где, в Ворде, блокноте и т.д.). Помогите, пожалуйста разобраться! Подскажите, где у меня ошибка?
Заранее спасибо! |
|||
|
||||
| Genyaa |
|
|||
|
Усердный ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 25.9.2006 Где: Москва Репутация: нет Всего: 11 |
DBGrid1.DataSource.DataSet.Next;
ExcelApplication.WorkBooks[1].WorkSheets['Отчет'].Paste; Я не знаток DBGrid, но по сути в Excel метод Paste вставляет данные из ClipBoard (скопированные ранее по Copy или <Ctrl+C>). Что собственно и происходит, как Вы говорите. По логике вещей, нужно либо сначала скопировать нужные данные из DBGrid в ClipBoard (чего как раз я и не наблюдаю в Вашем коде) и потом использовать Paste, либо использовать другие методы переноса данных (непосредственное присвоение значений ячейкам, например). --------------------
Всякое решение плодит новые проблемы. |
|||
|
||||
| Demo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Данных в DBGride слишком много, поэтому присваивать значения ячейкам нецелесообразно.
А как можно скопировать данные из Грида? Но нужны не все поля из DBGrida, а выборочные! Помогите, пожалуйста!!! |
|||
|
||||
| Demo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Итак, данные из DBGrida я скопировала. Добавила следующий код:
Здесь я данные отправляю сначала в Memo, а затем в Excel. Memo используется как промежуточный компонент. Но теперь другой вопрос: Как мне выбрать конкретные столбцы из DBGrid? В Excel можно, конечно, потом удалить лишние, но нужно, чтобы туда попадали только нужные данные. И еще один вопрос: Можно при передаче данных перевернуть таблицу? Так, чтобы столбцы из DBGrid-а стали строками, а строки столбцами? |
|||
|
||||
| Genyaa |
|
|||
|
Усердный ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 25.9.2006 Где: Москва Репутация: нет Всего: 11 |
На этапе "отправления" данных в Мемо нужно перемещать не все столбцы DBGrid, а только нужные. В цикле "отправления" данных проверяйте номера столбцов или их имена на предмет предназначения их к переносу в Excel.
Это зависит от того, в какой последовательности "отправляете данные в Мемо". Если вывернуть циклы "на изнанку" и внешним циклом поставить перебор колонок, а внутренним - перебор строк в DBGrid, то вы скопируете в Мемо уже транспонированную таблицу. Но можно попробовать воспользоваться методом из Excel - PasteSpecial - этот метод (при верном указании параметров) позволяет сделать транспонирование скопированной таблицы на этапе вставки. --------------------
Всякое решение плодит новые проблемы. |
|||
|
||||
| Demo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Подскажите, пожалуйста, как это должно выглядеть программно?! Каким образом мне это описать? Например, мне нужны столбцы 2,4,6,7,11? |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: нет Всего: 109 |
Модератор: Пожалуйста, один топик - один вопрос.
Понимаю, что вопросы связаны по смыслу, но всё же... Добавлено @ 16:50 Кроме того! Это ближе к Delphi и базы данных... Посему перемещаю... |
|||
|
||||
| Savek |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
Использовать Clipboard для экспорта категорически не рекомендуется.
У пользователя там могут быть данные, которые будут утеряны |
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
мож это поможет...
Добавлено @ 17:10 и тут почитай |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
я уверен, что вопрос из этой темы http://forum.vingrad.ru/delphi-activex-com-corba-ole.html
Там это уже обсуждалось сотни раз Добавлено @ 10:02 Demo, и ещё, DBGrid тут не причём, т.к. DBGrid всего лишь отображает данные из TDataSet`а, с DataSet`ом и работай. Добавлено @ 10:04 Demo, вот, смотри, шикарная тема: http://forum.vingrad.ru/topic-84634.html Это сообщение отредактировал(а) Akella - 28.11.2006, 10:03 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |