Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2018, 16:49   #1
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию Вывод DBGrid в exel

Я понимаю что в форуме и в интернете этих тем куча,но я все равно не догоняю как его вывести
На фотке есть БД и элементы которые я к ней подключал
и мне нужно чтобы строчки выводились в виде таблицы в Exel
Вот я вроде написал код,но он все равно не работает нормально
Код:
procedure TForm5.Button9Click(Sender: TObject);
var
Chart,W:variant;
j,i:integer;
begin
W:=CreateOleObject('Excel.Application');
w.Workbooks.Add;
W.visible:=true;
ADOQuery1.First; j:=0;
while not ADOQuery1.Eof do begin
inc(j);
for i:=1 to ADOQuery1.FieldCount-1 do
w.ActiveWorkBook.WorkSheets[1].Cells[j, i]:=ADOQuery1.Fields[i].AsString;
ADOQuery1.Next;
end;
 Chart:=w.WorkBooks[1].Charts.Add;
Chart.ChartType:=51;
Chart.SeriesCollection.Add(Source:=w.Workbooks[1].Sheets.Item[2].Range['d2:d'+IntToSTr(j)]);
Chart.HasTitle:=True;
Chart.ChartTitle.Text:='Електронний журнал салону';
Chart.ChartTitle.Shadow:=true;
Chart.ChartTitle.Font.size:=26;
 w.Visible := true;
 end;
procedure TForm5.Edit1Change(Sender: TObject);
begin
adoquery1.active := False;
adoquery1.sql.clear;
adoquery1.sql.add('SELECT *');
adoquery1.sql.add('FROM databasse');
ADOQuery1.Sql.Add('WHERE ПІБ LIKE '+#39+Edit1.Text+'%'+#39);
adoquery1.active := true;
ADOQuery1.Open;
end;
Изображения
Тип файла: png Безымянный.png (17.9 Кб, 116 просмотров)

Последний раз редактировалось kostya_hor; 31.05.2018 в 19:23.
kostya_hor вне форума Ответить с цитированием
Старый 01.06.2018, 04:23   #2
D1973
Пользователь
 
Регистрация: 04.04.2018
Сообщений: 28
По умолчанию

Цитата:
Сообщение от kostya_hor Посмотреть сообщение
Вот я вроде написал код
здорово... А где диаграмма, которую Вы зачем-то там строили?
D1973 вне форума Ответить с цитированием
Старый 01.06.2018, 07:23   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
for i:=1 to ADOQuery1.FieldCount-1 do
w.ActiveWorkBook.WorkSheets[1].Cells[j, i]:=ADOQuery1.Fields[i].AsString;
В экселе с единицы считаем, тут всё верно. Но в ADOQuery нумерация полей с нуля начинается
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 01.06.2018, 17:34   #4
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию

Вот кому нужно рабочий код
Вместо непонятных символов пишите названия столбцов
Код:
procedure TForm5.Button9Click(Sender: TObject);
var i,x: Integer;
    E,S:variant;
begin
 
E:= CreateOleObject('Excel.Application');
E.visible:=true;
E.Workbooks.Add;
E.Workbooks[1].WorkSheets[1].Columns[1].ColumnWidth:=35;
E.Workbooks[1].WorkSheets[1].Columns[2].ColumnWidth:=35;
E.Workbooks[1].WorkSheets[1].Columns[3].ColumnWidth:=35;
E.Workbooks[1].WorkSheets[1].Columns[4].ColumnWidth:=35;
E.Workbooks[1].WorkSheets[1].Columns[5].ColumnWidth:=35;
E.Workbooks[1].WorkSheets[1].Rows[1].Font.Bold:=true;
E.Workbooks[1].WorkSheets[1].Rows[1].Font.Color:=clGreen;
E.Workbooks[1].WorkSheets[1].Rows[1].Font.Size:=14;
S:=E.Workbooks[1].WorkSheets[1];
S.Cells[1,1]:='В№';
S.Cells[1,2]:='ГЏВІГЃ';
S.Cells[1,3]:='В№ ГЏГ*ñïîðòГ*';
S.Cells[1,4]:='ГЊГ*ðêГ* Г¬Г*ГёГЁГ*ГЁ';
S.Cells[1,5]:='ГђВіГЄ ГўГЁГЇГіГ±ГЄГі';
S.Cells[1,6]:='ÑóìГ*';
S.Cells[1,7]:='Г‡Г*èæêГ*';
S.Cells[1,8]:='ϳäñóìêîâГ* Г±ГіГ¬Г*';
x:=2;
ADOQuery1.First;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
S.Cells[x,1]:=ADOQuery1.Fields.Fields[0].Asinteger;
S.Cells[x,2]:=ADOQuery1.Fields.Fields[1].Asstring;
S.Cells[x,3]:=ADOQuery1.Fields.Fields[2].Asstring;
S.Cells[x,4]:=ADOQuery1.Fields.Fields[3].Asvariant;
S.Cells[x,5]:=ADOQuery1.Fields.Fields[4].Asstring ;
S.Cells[x,6]:=ADOQuery1.Fields.Fields[5].Asstring ;
S.Cells[x,7]:=ADOQuery1.Fields.Fields[6].Asstring ;
S.Cells[x,8]:=ADOQuery1.Fields.Fields[7].Asstring ;
inc(x);
ADOQuery1.Next;
E:=UnAssigned;
 end;
 end;
kostya_hor вне форума Ответить с цитированием
Старый 01.06.2018, 17:46   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Зачем икс, дорогой? Не надо там никакого икс!


Код:
for i:=0 to ADOQuery1.RecordCount-1 do
begin
S.Cells[i + 2,1]:=ADOQuery1.Fields.Fields[0].Asinteger;
S.Cells[i + 2,2]:=ADOQuery1.Fields.Fields[1].Asstring;
S.Cells[i + 2,3]:=ADOQuery1.Fields.Fields[2].Asstring;
S.Cells[i + 2,4]:=ADOQuery1.Fields.Fields[3].Asvariant;
S.Cells[i + 2,5]:=ADOQuery1.Fields.Fields[4].Asstring ;
S.Cells[i + 2,6]:=ADOQuery1.Fields.Fields[5].Asstring ;
S.Cells[i + 2,7]:=ADOQuery1.Fields.Fields[6].Asstring ;
S.Cells[i + 2,8]:=ADOQuery1.Fields.Fields[7].Asstring ;
E:=UnAssigned;
ADOQuery1.Next;
 end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 02.06.2018 в 12:46.
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
exel Nik945 Фриланс 4 06.05.2017 23:28
Выборочный импорт exel в exel McSim Microsoft Office Excel 3 01.03.2014 18:25
Вывод данных в Exel-файл Cugop Общие вопросы C/C++ 0 02.06.2012 06:42
Запарка с DBDrid Eveda Помощь студентам 0 22.04.2012 20:10
вывод в Exel Ошибка Анатолий_Краснов БД в Delphi 3 02.07.2011 08:22