Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel - экспорт выбранной ячейки из DBGrid в Excel 
:(
    Опции темы
wymkent
Дата 16.5.2012, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.3.2012

Репутация: нет
Всего: нет



Здравствуйте! нужно экспортировать выбранную ячейку из DBGrid в Excel. использую AdoQuery (можно два варианта Adoquery и Adotable). заранее благодарен!
и еще вопрос можно ли также пустить в экспорт выбранную ячейку из DBGrid в Word.
PM MAIL   Вверх
northener
Дата 16.5.2012, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(wymkent @  16.5.2012,  01:06 Найти цитируемый пост)
экспортировать выбранную ячейку из DBGrid

Что именно вам нужно? Поясните задачу. DBGrid всего лишь картинка на форме. А ячейка из DBGrid - часть этой картинки.

Цитата(wymkent @  16.5.2012,  01:06 Найти цитируемый пост)
можно два варианта Adoquery и Adotable

Лучше сразу выкинуть оба этих варианта и использовать TADODataSet.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
wymkent
Дата 16.5.2012, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.3.2012

Репутация: нет
Всего: нет



здравствуйте northener! задача такая на форме есть Dbgrid и кнопка распечатать так вот в Dbgrid-е выбираю нужную мне строку и кликаю на кнопку распечатать. должна выйти на печать именно та строка которую я выбрал в гриде, экспорт нужно сделать в Excel либо в Word. нужен код всего этого) и если можно то с описанием подробным)
PM MAIL   Вверх
Akella
Дата 16.5.2012, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



то ячейка, то строка... определитесь
PM MAIL   Вверх
superVad
Дата 16.5.2012, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



wymkent, вот тема была похожая - ссылка
PM MAIL   Вверх
Данкинг
Дата 16.5.2012, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



А через отчёты не проще это сделать?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 16.5.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(wymkent @  16.5.2012,  01:06 Найти цитируемый пост)
выбранную ячейку


Очень просто. Выделяешь строку в грида мышкой или клавой, при этом в НД (Наборе Данных (в DataSet`е)) автоматически позиционируется нужная строка, остаётся только получить значение нужного поля:

Код

a := dbgrid1.datasource.dataset.fieldByName('имя_нужного_поля').asString; //(или asInteger)

//ну и теперь экспортируй "a" куда нужно

PM MAIL   Вверх
wymkent
Дата 16.5.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.3.2012

Репутация: нет
Всего: нет



вот код который у меня стоит. что здесь нужно изменить чтоб он выводил то что мне нужно выделенную строку(извиняюсь в начале говорил ячейку) но нужна строка. вот посмотрите пожалуйста:

procedure TForm5.ExportClick(Sender: TObject);
var
i,j,index: Integer;
ExcelApp,sheet: Variant;
begin
 ExcelApp := CreateOleObject('Excel.Application');
 ExcelApp.Visible := False;
 ExcelApp.WorkBooks.Add(-4167);
 ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Export';
 sheet:=ExcelApp.WorkBooks[1].WorkSheets['Export'];
 index:=1; //Загоняем с первой строки
 DBGrid1.DataSource.DataSet.First;
      for i:=1 to  DBGrid1.DataSource.DataSet.RecordCount do
      begin
      for j:=1 to DBGrid1.FieldCount do
      sheet.cells[index,j]:=DBGrid1.fields[j-1].asstring;
      inc(index);
      DBGrid1.DataSource.DataSet.Next;
      end;
 ExcelApp.Visible := true;  
PM MAIL   Вверх
Akella
Дата 16.5.2012, 16:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(wymkent @  16.5.2012,  16:47 Найти цитируемый пост)
for j:=1 to DBGrid1.FieldCount do

тебе ж сказали, что используй НД


Цитата(wymkent @  16.5.2012,  16:47 Найти цитируемый пост)
выделенную строку


ты выделяешь строку,  потом....

Цитата(wymkent @  16.5.2012,  16:47 Найти цитируемый пост)
DBGrid1.DataSource.DataSet.First;


перемещаешься на первую


открой сокральный смысл сего действа?
PM MAIL   Вверх
gesper
Дата 18.5.2012, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 23.2.2005

Репутация: 1
Всего: 2



Цитата(wymkent @ 16.5.2012,  16:47)
procedure TForm5.ExportClick(Sender: TObject);
var
i,j,index: Integer;
ExcelApp,sheet: Variant;
begin
 ExcelApp := CreateOleObject('Excel.Application');
 ExcelApp.Visible := False;
 ExcelApp.WorkBooks.Add(-4167);
 ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Export';
 sheet:=ExcelApp.WorkBooks[1].WorkSheets['Export'];
 index:=1; //Загоняем с первой строки
 DBGrid1.DataSource.DataSet.First;
      for i:=1 to  DBGrid1.DataSource.DataSet.RecordCount do
      begin
      for j:=1 to DBGrid1.FieldCount do
      sheet.cells[index,j]:=DBGrid1.fields[j-1].asstring;
      inc(index);
      DBGrid1.DataSource.DataSet.Next;
      end;
 ExcelApp.Visible := true;

ExcelApp := CreateOleObject('Excel.Application');

Как взять нужную строку сам разберешься с помощью остальных, а я вот тебе скажу, что способ подключения к Excel фиговый.
Тебе надо сделать проверку получилось ли подключится к нему, и в случае если была ошибка при выполнении загрузки в него данных, все равно в любом случае сделать окно Excel видимым. А у тебя по коду, если ошибка появится, то все рухнет и в диспетчере задач будет висеть excel скрытый отовсех глаз.

На компьютере пользователя может не быть Excel, может стоять кривая установка office, может стоять Office Starter и во всех этих случаях через OLE твоя программа не сможет вывести данные в Excel, а вывалится в ошибку.
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
Akella
Дата 18.5.2012, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(gesper @  18.5.2012,  03:37 Найти цитируемый пост)
в любом случае сделать окно Excel видимым

зачем в любом случае?
PM MAIL   Вверх
gesper
Дата 18.5.2012, 15:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 23.2.2005

Репутация: 1
Всего: 2



Цитата(Akella @ 18.5.2012,  12:22)
Цитата(gesper @  18.5.2012,  03:37 Найти цитируемый пост)
в любом случае сделать окно Excel видимым

зачем в любом случае?

Выполнил работу - Показать
Вылетел в ошибку - Показать, чтобы не болталось в памяти программа скрытая. Можно закрыть попробовать, но не факт что получится.

--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
Данкинг
Дата 18.5.2012, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Тоже не понимаю, зачем окно Экселя видимым делать.
Цитата(gesper @  18.5.2012,  16:08 Найти цитируемый пост)
Выполнил работу - Показать

Зачем?
Цитата(gesper @  18.5.2012,  16:08 Найти цитируемый пост)
Можно закрыть попробовать, но не факт что получится.

Повесить закрытие на уничтожение формы проги. В 99% случаев получится.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kami
Дата 18.5.2012, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Простите, что вмешиваюсь, но:
Цитата(gesper @  18.5.2012,  03:37 Найти цитируемый пост)
может стоять Office Starter и во всех этих случаях через OLE твоя программа не сможет вывести данные в Excel

Почему? С первыми двумя случаями понятно. Интересует именно Office Starter. Можно ссылку какую-нибудь?
PM MAIL WWW   Вверх
wymkent
Дата 19.5.2012, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.3.2012

Репутация: нет
Всего: нет



всем спасибо! все заработало! теперь с PopupMenu дрочусь, нужно чтобы при нажатии правой кнопкой мыши появилась(ну это уже PopupMenu) окошко выбираешь там нужный пункт в моем случае "Списание" и именно выбранная строка в DBGride появилась в DBEdit-ах. как это сделать подскажите. (если это понадобится использую ADOtable и Access)  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.