![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Экспорт из данных из DBGrid в Excel [D7]
tolianb © (2006-09-01 07:30:00)Подскажите пожалуйста, есть ли возможность экспортировать данные из компонента DBGrid на форме в Excel - интересует механизм доступа к ячейкам с данными
tolianb (2006-09-04 02:54:00) [1]Всем спасибо, работает, а то голову ломал!
isasa (2006-09-02 12:10:00) [2]Сорри, не проснулся.\\
Вот это
for i:= 1 to Table1.RecordCount do
считать этим
while not Table1.Eof do
isasa (2006-09-02 12:08:00) [3]Странно все это. Преремешаем текущую позицию в одном компоненте, данные берем в другом.
for i:= 1 to Table1.RecordCount do
begin
Sheet.Range['B'+IntToStr(i),'B'+IntToStr(i)].value := DBGrid1.Columns[1].Field.Value;
Table1.Next;
end;
может надо быть проще? И без мультфильмов :)
Table1.DisableControls;
for i:= 1 to Table1.RecordCount do
begin
Sheet.Range['B'+IntToStr(i),'B'+IntToStr(i)].value := Table1.FieldByName(<тут имя поля, например>).Value;
Table1.Next;
end;
Table1.EnableControls;
YurikGL (2006-09-01 20:52:00) [4]Несколько способов экспорта из БД в Excel
http://www.kladovka.net.ru/index.cgi?pid=board&rid=363
Lexer (2006-09-01 15:26:00) [5]>NewLamer © (01.09.06 15:21) [10]
RecordCount здесь лишний, данный код в некоторых случаях выведет множество одинаковых строк - повторяться будет последняя строка (сам подумай почему).
Использовать EOF, заполнять массив и кидать одним заходом его в Excel.
NewLamer (2006-09-01 15:21:00) [6]
Procedure FillReport(Sheet: variant);
var i: integer;
begin
With Form1 do
begin
for i:= 1 to Table1.RecordCount do
begin
Sheet.Range['B'+IntToStr(i),'B'+IntToStr(i)].value := DBGrid1.Columns[1].Field.Value;
Table1.Next;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var vExcel: Variant;
Sheet: variant;
begin
vExcel:= CreateOleObject('Excel.Application');
vExcel.WorkBooks.Open('C:\'+'Мои проекты'+'\Test.xls',true);
Sheet:= vExcel.WorkBooks.Item[1].Sheets[1];
FillReport(Sheet);
vExcel.Visible:= true;
end;
Вот пример с обычным гридом проверял работает
NotGooDP (2006-09-01 15:13:00) [7]>NewLamer
норм пример
>tolianb
http://www.kornjakov.ru/stat.htm
вот тебе статья по работе с суперфункциями Word и Exel там все понятно.
ANB (2006-09-01 14:48:00) [8]
> cxDBTreeList
И каким боком он к обычному гриду ?
NewLamer (2006-09-01 14:44:00) [9]Извиняюсь у меня другой компонент стоит cxDBTreeList
lexer (2006-09-01 14:23:00) [10]>NewLamer © (01.09.06 14:18) [5]
и после этого у стандартного DBGrid появятся свойства Count и Nodes? :)
NewLamer (2006-09-01 14:18:00) [11]Да. А это обычный грид. только в Uses еще надо добавить ComObj
ANB (2006-09-01 13:19:00) [12]
> NewLamer © (01.09.06 12:51) [3]
И это у тебя компиляется ? Где это ты такой грид то раздобыл ?
NewLamer (2006-09-01 12:51:00) [13]Если да то попробуй вот вот так
procedure TF_Otchet_MoveOS.OMOS_Btn_PrintClick(Sender: TObject);
//Процедура например нажатие кнопки
var vExcel: Variant;
Sheet: variant;
i: integer;
begin
vExcel:= CreateOleObject('Excel.Application');
vExcel.WorkBooks.Open('C:\'+'Мои проекты'+'\Test.xls',true);//Путь к файлу Excel и его имя
Sheet:= vExcel.WorkBooks.Item[1].Sheets[1];
for i:= 0 to DBGrid1.Count-1 do
Sheet.Range['B'+IntToStr(i+1),'B'+IntToStr(i+1)].value := DBGrid1.Nodes.Items[i].Values[Здесь укажешь номер нужного столбца];
Sheet.Range['C'+IntToStr(i+1),'C'+IntToStr(i+1)].value := DBGrid1.Nodes.Items[i].Values[Здесь укажешь номер нужного столбца];
//и так далее сколько столбцов нужно скопироватьв Excel
vExcel.Visible:= true;
end;
Sheet.Range['B'+IntToStr(i+1),'B'+IntToStr(i+1)].value - это номер ячейки в Excel
он должен существовать!!! т.е. он не создается сам по себе ты лишь запишешь в него данные
NewLamer (2006-09-01 12:29:00) [14]тебе надо просто данные из Грида в Excel перекинуть и все?
ANB (2006-09-01 09:05:00) [15]В DBGrid нет данных, они лежать в дайтасете. Ветку надо перенести в "Начинающим".
ЗЫ. Впрочем есть гриды, которые умеют экспортить, но при этом все равно не себя, а набор данных, который они отображают. Заменяются только имена колонок на гридовые.