Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отчеты в екселе / 7 сообщений из 7, страница 1 из 1
21.08.2002, 01:11
    #32044746
lorien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
Здравствуйте, может кто знает, как сделать так: данные формируются в программе, а вид отчета нарисован в екселе, при нажатии кнопки в программе открывается отчет из екселя, в котором данные из программы. Честно говоря, сама не совсем поняла, что сказала. И какие существуют компоненты для отчетов в экселе из делфи5. За раннее благодарна
...
Рейтинг: 0 / 0
21.08.2002, 01:16
    #32044747
lorien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
Ссылка внизу нерабочая, а Афалина шаривари
...
Рейтинг: 0 / 0
21.08.2002, 01:19
    #32044748
lorien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
пардон, разабралась
...
Рейтинг: 0 / 0
21.08.2002, 07:21
    #32044761
Dimos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
Excel можно использовать как Automation Server,
т.е. вы можете управлять приложением Excel из Delphi, причем точно так же как это бы делалось из самого Excel на VBA.

Почитайте литературу и посмотрите примеры по OLE Automation
...
Рейтинг: 0 / 0
21.08.2002, 11:01
    #32044836
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
Конечно можно использовать Excel как Automation Server, можно ещё написать VBScript который формирует отчёт, но это достаточно геморройно.

А вот продукт от Афалины т.е. XL REPORT весьма приятная штука, правда бесплатный без исходников, а за исходники платить надо!
...
Рейтинг: 0 / 0
23.08.2002, 07:05
    #32045395
matveev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
я делаю это так:

Private
Excel, Sheet: variant

Проверяем не запущен ли Excel
++++++++++++++++++++++++++++++
function Tmtrglav.ExistExcel(FileNameXLS: string):Variant;
var
VarExcel: variant;
iWb, CountWb: Integer;
begin
try
try
VarExcel:=GetActiveOleObject('Excel.Application');
CountWb:=VarExcel.Workbooks.Count;
for iWb:=1 to CountWb do begin
if VarExcel.Workbooks[iWb].Name=FileNameXLS then begin
VarExcel.Worcbooks[iWb].Close;
repeat
until VarExcel.Workbooks.Count<CountWb;
CountWb:=VarExcel.Workbooks.Count;
end{if};
end{for};
Result:=VarExcel;
except
Result:=CreateOleObject('Excel.Application');
end{try};
except
MessageDlg('На компьютере отсутствует Microsoft Excel.',mtError,[mbOk],0);
Result:=null;
end{try}
end{func};

++++++++++++++Вызов

NewFileOt:=ExtractFilePath(Application.ExeName) +'XLS\'+'my.xls';

Excel:=ExistExcel(NewFileOt);
if VarIsNull(Excel) then exit;
Excel.visible:=true;
Excel.Workbooks.Open(NewFileOt);
Sheet:=Excel.Sheets;

Ну а дальше примерно так:

ADOQuery1.First;
while not ADOQuery1.Eof do
begin
Sheet.Cells[Row,1] := FieldByName('cod').AsInteger;
Sheet.Cells[Row,2] := FieldByName('тфьу').AsString;
ADOQuery1.Next

end;
ну и т.д.
...
Рейтинг: 0 / 0
23.08.2002, 09:09
    #32045404
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчеты в екселе
2matveev:
Ты кстати очень не грамотно делаешь присваи значения ячейкам таким способом:
Sheet.Cells[Row,1] := FieldByName('cod').AsInteger;
Sheet.Cells[Row,2] := FieldByName('тфьу').AsString;

Это самый медленный способ, конечно если мало данных то бог с ним, но набольших объёмах замедление будет большим, гораздо проще сделать так, т.е. бежишь по датасету и присваишь значения полей некоему двумерному массиву, а затем это массив присваишь диапазону (RANGE) твоего екселевского отчёта
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отчеты в екселе / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]