Создать отчет и выгрузить его в excel файл
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Archangel Участник
Вступление в Клуб: 01.07.2009
|
Ср Июл 01, 2009 11:51  Создать отчет и выгрузить его в excel файл |
|
Полезность: Нет оценки
|
Всем привет))) Нужна помощь новичку))) Только начал разбирать систему. И появилась задача создать отчет и выгрузить его в excel файл.
Подскажите как можно отчет выгрузить в excel файл???? |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Ср Июл 01, 2009 12:13  Re: Нужна помощь :) |
|
Полезность: 1
|
Archangel пишет: | Всем привет))) Нужна помощь новичку))) Только начал разбирать систему. И появилась задача создать отчет и выгрузить его в exel файл.
Подскажите как можно отчет выгрузить в exel файл???? |
один из простых отчетиков в формате Excel... собранных на коленке, ибо нужно было быстро
на форме присутсвуют ОБЯЗАТЕЛЬНО переменная V_DEST, на ней просто необходимо поставить CheckValidate = true и имя должно быть DEST (по крайней мере так нам в свое время объясняли)
секция тело выглядит следующим образом
секция проверка выглядит следующим образом...
Код: | procedure CALC_REPORT
is
row integer := 1;
date_begin [date_time]:= trunc(P_DATE_BEGIN);
date_end [date_time]:= trunc(P_DATE_END + 1);
begin
-- Заполним шапку выписки
excel.write(row, 1, '№ платежного документа', true);
excel.Borders(row , 1, row , 1,'RLT');
excel.write(row, 2, 'Дата соверш операции', true);
excel.Borders(row , 2, row , 2,'RLT');
excel.write(row, 3, 'Бик банка плательщика', true);
excel.Borders(row , 3, row , 3,'RLT');
excel.write(row, 4, 'Наименование плательщика', true);
excel.Borders(row , 4, row , 4,'RLT');
excel.write(row, 5, 'ИНН плательщика', true);
excel.Borders(row , 5, row , 5,'RLT');
excel.write(row, 6, '№ счета плательщика', true);
excel.Borders(row , 6, row , 6,'RLT');
excel.write(row, 7, 'БИК банка получателя', true);
excel.Borders(row , 7, row , 7,'RLT');
excel.write(row, 8, 'Наименование получателя', true);
excel.Borders(row , 8, row , 8,'RLT');
excel.write(row, 9, 'ИНН получателя', true);
excel.Borders(row , 9, row , 9,'RLT');
excel.write(row, 10, '№ счета получателя', true);
excel.Borders(row , 10, row , 10,'RLT');
excel.write(row, 11, 'сумма операции', true);
excel.Borders(row , 11, row , 11,'RLT');
excel.write(row, 12, 'Назначение платежа', true);
excel.Borders(row , 12, row , 12,'RLH');
excel.Set_Column_Width(row,12,24);
--переведем строку
row := 2;
--debug_pipe('P_ACC.[MAIN_V_ID]'||P_ACC.[MAIN_V_ID]);
-- найдем движения по счету
for vip_str in P_ACC.[ARC_MOVE]
where vip_str.[DATE] >= date_begin and
vip_str.[DATE] <= date_end
loop
--Заполним таблицу и обозначим границы
excel.write(row , 1, vip_str.[DOC].[DOCUMENT_NUM]);
excel.Borders(row , 1, row , 1,'RLT');
if P_TIME_FLAG then
excel.write(row , 2, to_char(vip_str.[DOC].[DATE_PROV], 'DD/MM/YYYY HH24:MI:SS'));
else
excel.write(row , 2, to_char(vip_str.[DOC].[DATE_PROV], 'DD/MM/YYYY'));
end if;
excel.Borders(row , 2, row , 2,'RLT');
excel.write(row , 3, nvl(vip_str.[DOC].[KL_DT].[2].[3].[BIC], vip_str.[DOC].[KL_DT].[1].[2].[FILIAL].[BANK].[BIC]));
excel.Borders(row , 3, row , 3,'RLT');
excel.write(row , 4, nvl(vip_str.[DOC].[KL_DT].[2].[2], vip_str.[DOC].[KL_DT].[1].[1].[NAME]));
excel.Borders(row , 4, row , 4,'RLT');
excel.write(row , 5, nvl(vip_str.[DOC].[KL_DT].[2].[INN], vip_str.[DOC].[KL_DT].[1].[1].[INN]));
excel.Borders(row , 5, row , 5,'RLT');
excel.write(row , 6, nvl(vip_str.[DOC].[KL_DT].[2].[1], vip_str.[DOC].[KL_DT].[1].[2].[MAIN_V_ID]));
excel.Borders(row , 6, row , 6,'RLT');
excel.write(row , 7, nvl(vip_str.[DOC].[KL_KT].[2].[3].[BIC], vip_str.[DOC].[KL_KT].[1].[2].[FILIAL].[BANK].[BIC]));
excel.Borders(row , 7, row , 7,'RLT');
excel.write(row , 8, nvl(vip_str.[DOC].[KL_KT].[2].[2], vip_str.[DOC].[KL_KT].[1].[1].[NAME]));
excel.Borders(row , 8, row , 8,'RLT');
excel.write(row , 9, nvl(vip_str.[DOC].[KL_KT].[2].[INN], vip_str.[DOC].[KL_KT].[1].[1].[INN]));
excel.Borders(row , 9, row , 9,'RLT');
excel.write(row , 10, nvl(vip_str.[DOC].[KL_KT].[2].[1], vip_str.[DOC].[KL_KT].[1].[2].[MAIN_V_ID]));
excel.Borders(row , 10, row , 10,'RLT');
excel.Set_Number_Format(row, 11, row, 11, 2, false);
excel.write(row , 11, vip_str.[DOC].[SUM]);
excel.Borders(row , 11, row , 11,'RLT');
excel.write(row , 12, vip_str.[DOC].[NAZN]);
excel.Borders(row , 12, row , 12,'RLT');
row := row + 1;
end loop;
-- Наведем косметику
excel.Allign(1, 1, row -1, 12, 'CM');
excel.Borders(1 , 1, row -1 , 12,'RLB');
debug_pipe('++++++++++++++++++++++++++++');
debug_pipe('+++ Выгрузка в Excel ... +++');
debug_pipe('++++++++++++++++++++++++++++');
end;
begin
if p_message = 'DEFAULT' then
P_TIME_FLAG := false;
P_ACC := this;
EXCEL.INIT_XLS;
V_DEST := null;
P_XLS := ::[REPS].[SLIB].GetPath('PATH_PRINT_EXCEL','Выписка для Росфинмониторинга.xlt');
P_DATE_BEGIN := sysdate;
P_DATE_END := sysdate;
elsif p_message = 'VALIDATE' then
if P_DATE_BEGIN is null or P_DATE_END is null then
pragma error('Не указан период выписки');
end if;
if excel.f_click then
excel.f_click := false;
excel.open_file (P_XLS, false);
CALC_REPORT;
excel.visible;
excel.release;
End If;
EXCEL.EXEC_SCRIPT(V_DEST);
end if;
end;
|
нечто подобное в клиент скрипте
Код: | Public Function Main(LastControl)
If LastControl is nothing Then
Form1.ScriptShowMonitor
Else
If LastControl is OK and Dest.Text <> "" Then
DO 'исполнение скрипта
Execute Dest.Text
Call Form1.ScriptServerValidate( OK, "OK")
Loop While Dest.Text <> ""
End If
End If
Main = True
End Function |
а так же не мешало бы все же заглянуть в тип RUNTIME и почитать каменты в библиотеке EXCEL
P.S.
рисование можно программно не применять, а сделать 1 строку в шаблоне.. и далее уже использовать функцию библиотеки excel - PasteSpecial _________________ всегда есть как минимум 2 выхода |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
|
 |
Archangel Участник
Вступление в Клуб: 01.07.2009
|
Чт Июл 02, 2009 08:18   |
|
Полезность: 1
|
Спасибо Буду разбираться)))) |
|
 |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Пт Июл 03, 2009 09:01   |
|
Полезность: Нет оценки
|
Archangel пишет: | Спасибо Буду разбираться)))) |
НА ПРАВАХ МОДЕРАТОРА.
Archangel, прошу в следующий раз тему сообщения писать более информативно. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|