Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle APEX Новый топик    Ответить
 Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
Доброго времени суток,
ищу решение такой вот проблемки:
На странице есть 3 отдельных региона - отчета.
Надо одной кнопкой экспортировать их всех в csv или любой другой формат понятный экселю.
Старндартными методами как я понял можно экспортировать по отдельности каждый регион, но не все разом.

Пробовал на всю страницу выставлять Page Template: PrinterFriendly и Before Header/Processes страницы пихать:

BEGIN
owa_util.mime_header('application/vnd.ms-excel', FALSE);
htp.p('Content-Disposition: attachment; filename="my_file.csv"');
owa_util.http_header_close;
END;

а в After regions/Processes:

BEGIN
htmldb_application.g_unrecoverable_error := TRUE;
END;

В итоге получаю одним куском файл со всеми 3 отчетами но к сожалению в него попадает много html мусора от которого я не знаю способа как избавиться.

Рою инет уже которую неделю, может я чето не догоняю даже как то не вериться что в апексе такой возможности как комплексный экспорт страницы со всеми отчетами нет.
23 фев 12, 02:59    [12141033]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
вот примерт как это выглядит
http://apex.oracle.com/pls/apex/f?p=39655
23 фев 12, 18:00    [12143038]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
Неужели никаких идей?
24 фев 12, 01:04    [12144516]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
haXbat
Member

Откуда:
Сообщений: 440
Den999,

Shared Components > Reports > Report Queries + Report Layouts смотрели?
24 фев 12, 09:20    [12144968]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Den999,

И что? Я вот например в новом Excel'е такое тоже найти не могу.
Вы уверены, что формат csv вообще такое поддерживает (несколько таблиц) ?

Можно конечно поизвращаться с сервером печати. Или долго и настойчиво искать какие-то библиотеки.
Но не страдайте фигней. Программируется руками за 15 мин.

Вот пару ссылок, которые могут помочь

Denes Kubicek. Upload Files
Страница без темплейтов

Заодно определитесь с форматом, что вы хотите получить в итоге...
24 фев 12, 12:00    [12145842]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
haXbat
Member

Откуда:
Сообщений: 440
Den999,

Вот рабочий пример. Выгрузка в один файл xls данных из двух запросов.
24 фев 12, 12:27    [12146000]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
haXbat
Den999,

Вот рабочий пример. Выгрузка в один файл xls данных из двух запросов.


это мой пример? а где первый вертикальный отчет?
уточню, на моей странице три отчета:

1) вертикальный sql отчет
2) обычный но из PL/SQL function body returning SQL query
3) Interactive Report

если это сделано с помощью внешнего принт сервера типа BI Publisher'a или т.п. то такой вариант к сожеления не подходит, т.к. у заказчика физически невозможно больше ничего дополнительно инсталировать кроме уже существующих win7 64bit+db11.2+apex4.2
24 фев 12, 15:33    [12147659]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
haXbat
Den999,

Вот рабочий пример. Выгрузка в один файл xls данных из двух запросов.


Прекрасно знаю такой способ генерированию страниц, сам его изпользовал с обычным Apache+mod_plsql лет 5 назад до перехода на апекс. Теперь вы мне предлагаете перелопатить готовую апликацию с 10 отчетами и в РУЧНУЮ запрограмить их все? Поверьте это точно не 15мин и даже не 15 часов. Это я тут для пониманию моей задачи привел очень упрощеный примерчик.
24 фев 12, 15:42    [12147760]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Den999,

И что? Я вот например в новом Excel'е такое тоже найти не могу.
Вы уверены, что формат csv вообще такое поддерживает (несколько таблиц) ?

Можно конечно поизвращаться с сервером печати. Или долго и настойчиво искать какие-то библиотеки.
Но не страдайте фигней. Программируется руками за 15 мин.

Вот пару ссылок, которые могут помочь

Denes Kubicek. Upload Files
Страница без темплейтов

Заодно определитесь с форматом, что вы хотите получить в итоге...


Да в xls формат не обязательно конвертировать, достаточно обычный CSV.
Он не может поддерживать или не поддерживать несколько таблиц, т.к. это обычный текст разделенный определенным символом по которому уже программа его обрабатывающаю может парсить его в таблицы. Так что это задача экселя поддерживать, с чем она и прекрасно справляется.
В итоге мне надо обычные экселевские таблицы без всякого форматирования, поэтому и выбрал и CSV тут самое простое решение.
Ну как аналог может быть в HTML или XML он (эксель) тоже прекрасно распарщивает.
Как пример я попробовал сделать выгрузку страницы генирируемой апексом в HTML но что из этого получается видели на примере -куча ненужного мусора.

Насчет приведенных ссылок:
Прекрасно знаю такой способ генерированию страниц, сам его изпользовал с обычным Apache+mod_plsql лет 5 назад до перехода на апекс. Теперь вы мне предлагаете перелопатить готовую апликацию с 10 отчетами и в РУЧНУЮ запрограмить их все? Поверьте это точно не 15мин и даже не 15 часов. Это я тут для пониманию моей задачи привел очень упрощеный примерчик.
24 фев 12, 15:53    [12147853]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Den999,

Да в xls формат не обязательно конвертировать, достаточно обычный CSV.
Он не может поддерживать или не поддерживать несколько таблиц, т.к. это обычный текст разделенный определенным символом по которому уже программа его обрабатывающаю может парсить его в таблицы. Так что это задача экселя поддерживать, с чем она и прекрасно справляется.

Да где же справляется-то ??? Офис 2007 нету. Офис 2003 умеет только один лист экспортировать в него.
Объедините в один репорт, скройте, и получить возможность экспорта объединенных данных.

автор
Поверьте это точно не 15мин и даже не 15 часов. Это я тут для пониманию моей задачи привел очень упрощеный примерчик.

вот именно потому что csv это просто значения через разделитель, глупо искать библиотеку для непонятной задачи, которую даже excel не умеет. Проще сделать руками.

Где там 15 часов нашли не понятно. Под каждым reports есть source. Продублировать его, и записать через разделитель.
Если у вас там супер-сложно-организованный-dynamic content, или нужно проделать на 100 страницах, можно поискать другие подходы собирания данных, но это уже другая тема.
24 фев 12, 16:20    [12148159]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Den999,

Да в xls формат не обязательно конвертировать, достаточно обычный CSV.
Он не может поддерживать или не поддерживать несколько таблиц, т.к. это обычный текст разделенный определенным символом по которому уже программа его обрабатывающаю может парсить его в таблицы. Так что это задача экселя поддерживать, с чем она и прекрасно справляется.

Да где же справляется-то ??? Офис 2007 нету. Офис 2003 умеет только один лист экспортировать в него.
Объедините в один репорт, скройте, и получить возможность экспорта объединенных данных.

автор
Поверьте это точно не 15мин и даже не 15 часов. Это я тут для пониманию моей задачи привел очень упрощеный примерчик.

вот именно потому что csv это просто значения через разделитель, глупо искать библиотеку для непонятной задачи, которую даже excel не умеет. Проще сделать руками.

Где там 15 часов нашли не понятно. Под каждым reports есть source. Продублировать его, и записать через разделитель.
Если у вас там супер-сложно-организованный-dynamic content, или нужно проделать на 100 страницах, можно поискать другие подходы собирания данных, но это уже другая тема.


Возможности экселя экспортировать в csv мне на самом деле не важны ведь я не экспортирую из экселя а импортирую в эксель csv формат, и с этим проблем никаких не возникало. Есть файл с тремя блоками текста через точку с запятой(;) все прекрасно импортируется в три отдельные таблицы одна под другой.

насчет копированию сорца в другие места программы это не совсем правильный подход с точки зрения програмирования да и так тупо не сработает, т.к. у меня в отчете динамически отключаются столбцы в зависимости от начальных параметров да и сорторовка и групировка в IR, слету просто не сделаешь.

Чувствуе придется писать собственный пакет экспорта. Нашел несколько апексовских пакетов по теме (WWV_FLOW_PLUGIN_UTIL; WWV_FLOW_RENDER_QUERY) но нужно время тестировать и пробовать а его как всегда нету :(
24 фев 12, 16:45    [12148412]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Den999,

Могу еще предложить по теме

select * from apex_application_page_rpt 
select * from apex_application_page_rpt_cols


так же можно обратить внимание, ссылки на download csv имеют не сложный синтаксис, и все они в public доступе,
можно в цикле попробовать подгрузить и сконкатинировать. Только сомневаюсь, что найдете готовые реализации.
24 фев 12, 17:15    [12148714]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Den999,

Могу еще предложить по теме

select * from apex_application_page_rpt 
select * from apex_application_page_rpt_cols


так же можно обратить внимание, ссылки на download csv имеют не сложный синтаксис, и все они в public доступе,
можно в цикле попробовать подгрузить и сконкатинировать. Только сомневаюсь, что найдете готовые реализации.


За селекты спасибо.
С конкантинацией интересное предложение, но как по обращению по линку который возвращает csv получить его содержимое скажем в какойто свой буфер а не запрос на сохранение файла?
24 фев 12, 19:29    [12149801]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Den999,

Через utl_http. Вот сваял из кусков пример вам:

declare
    vURL       VARCHAR2(255);
    vBlob           BLOB;
    vCookieNameList  Owa_Cookie.vc_arr;
    vCookieValueList Owa_Cookie.vc_arr;
    vCookieCount     INTEGER;
    vCookieList      Utl_Http.cookie_table;
    vRequest         Utl_Http.req;
    vResponse        Utl_Http.resp;
    vData            RAW(32767);
BEGIN
    htp.init;
    vURL := apex_util.host_url('SCRIPT') || 'f?p=122:6:' || :session || '::::';
    DBMS_LOB.createtemporary(vBlob, FALSE);


    Owa_Cookie.get_all
      ( names    => vCookieNameList
      , vals     => vCookieValueList
      , num_vals => vCookieCount
      );
    FOR ii IN 1 .. vCookieNameList.COUNT
    LOOP
        vCookieList(ii).name   := vCookieNameList(ii);
        vCookieList(ii).value  := vCookieValueList(ii);
        vCookieList(ii).domain := ltrim( apex_util.host_url, 'http://' );
        vCookieList(ii).path   := '/';
    END LOOP;
    Utl_Http.add_cookies(vCookieList);



    vRequest := Utl_Http.begin_request(vURL);
    Utl_Http.set_header(vRequest, 'User-Agent', UPPER(OWA_UTIL.GET_CGI_ENV('HTTP_USER_AGENT')) );
    vResponse := Utl_Http.get_response(vRequest);


    LOOP
        BEGIN
            --------------------------------------------------------------------
            -- read the next junk of binary data
            --------------------------------------------------------------------
            Utl_Http.read_raw(vResponse, vData);
            --------------------------------------------------------------------
            -- append it to our blob for the pdf file
            --------------------------------------------------------------------
            Dbms_Lob.writeAppend
              ( lob_loc => vBlob
              , amount  => Utl_Raw.length(vData)
              , buffer  => vData
              );
        EXCEPTION WHEN Utl_Http.END_OF_BODY THEN
            EXIT; -- exit loop
        END;
    END LOOP;
    Utl_Http.end_response(vResponse);

    OWA_UTIL.mime_header ( 'text/html', FALSE);
    HTP.p ('Content-length: ' || dbms_lob.getlength(vBlob));
    OWA_UTIL.http_header_close;
    WPG_DOCLOAD.download_file (vBlob);
    apex_application.stop_apex_engine;
end;

(в данном случае before header process подгружает другую страницу, не public)

Работает в 4.1.
26 фев 12, 13:11    [12152671]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Тут я вижу 2 варианта. Если не хочется/не можется копировать/исправлять source.

1. Самостоятельно получить source и обработать его, в зависимости от типа региона.
В том числе conditional columns и т.д.
Недостаток: куча недокументированнных вызовов, вроде apex_040100.wwv_flow_page_plugs, постоянные дописывания двигателя.

2. utl_http, подгрузить все csv и сконкатинировать. В ссылках region_id должен быть, который так же легко вычислить.
Недостаток: скорость такой обработки.
26 фев 12, 13:24    [12152717]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Бегло еще поискал по вашей теме.

3. Попытать счастья с APEX_XXXXXX.WWV_FLOW_DISP_PAGE_PLUGS.DISPLAY_REPORT
которая наверняка пишет во все тот же wpg_docload с открытыми исходными кодами.

Напишите, делитесь.
26 фев 12, 14:19    [12152851]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Den999,

Через utl_http. Вот сваял из кусков пример вам:

declare
    vURL       VARCHAR2(255);
    vBlob           BLOB;
    vCookieNameList  Owa_Cookie.vc_arr;
    vCookieValueList Owa_Cookie.vc_arr;
    vCookieCount     INTEGER;
    vCookieList      Utl_Http.cookie_table;
    vRequest         Utl_Http.req;
    vResponse        Utl_Http.resp;
    vData            RAW(32767);
BEGIN
    htp.init;
    vURL := apex_util.host_url('SCRIPT') || 'f?p=122:6:' || :session || '::::';
    DBMS_LOB.createtemporary(vBlob, FALSE);


    Owa_Cookie.get_all
      ( names    => vCookieNameList
      , vals     => vCookieValueList
      , num_vals => vCookieCount
      );
    FOR ii IN 1 .. vCookieNameList.COUNT
    LOOP
        vCookieList(ii).name   := vCookieNameList(ii);
        vCookieList(ii).value  := vCookieValueList(ii);
        vCookieList(ii).domain := ltrim( apex_util.host_url, 'http://' );
        vCookieList(ii).path   := '/';
    END LOOP;
    Utl_Http.add_cookies(vCookieList);



    vRequest := Utl_Http.begin_request(vURL);
    Utl_Http.set_header(vRequest, 'User-Agent', UPPER(OWA_UTIL.GET_CGI_ENV('HTTP_USER_AGENT')) );
    vResponse := Utl_Http.get_response(vRequest);


    LOOP
        BEGIN
            --------------------------------------------------------------------
            -- read the next junk of binary data
            --------------------------------------------------------------------
            Utl_Http.read_raw(vResponse, vData);
            --------------------------------------------------------------------
            -- append it to our blob for the pdf file
            --------------------------------------------------------------------
            Dbms_Lob.writeAppend
              ( lob_loc => vBlob
              , amount  => Utl_Raw.length(vData)
              , buffer  => vData
              );
        EXCEPTION WHEN Utl_Http.END_OF_BODY THEN
            EXIT; -- exit loop
        END;
    END LOOP;
    Utl_Http.end_response(vResponse);

    OWA_UTIL.mime_header ( 'text/html', FALSE);
    HTP.p ('Content-length: ' || dbms_lob.getlength(vBlob));
    OWA_UTIL.http_header_close;
    WPG_DOCLOAD.download_file (vBlob);
    apex_application.stop_apex_engine;
end;

(в данном случае before header process подгружает другую страницу, не public)

Работает в 4.1.



решение с UTIL_HTTP генеально, но почемуто заставить работать приведенный пример я не смог.
вставил ваш соурц (исправив app_id i page_id на свои) в onload before header с условием срабатывания по нажатии кнопки.
но как только я нажимал кнопку происходило перебрасывание на страницу логина. выяснил что это происходит в момент отработки строчки с WPG_DOCLOAD.download_file (vBlob);
решил упростить пример чтобы чтение страницы происходило не blob а сразу в htp буфер, результат тотже: генерируемое содержимое файла - страница логина. Похоже какаято служебная информация для работы апекса теряется при обращении через UTL_HTTP.

P.S.
Переменная vURL, проверял, генерируется правильно с актуальным session_id.
А на apex.oracle.com вываливается ошибка: ORA-24247: network access denied by access control list (ACL)
http://apex.oracle.com/pls/apex/f?p=39655
кнопка UTL_HTTP
27 фев 12, 03:46    [12154587]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Бегло еще поискал по вашей теме.

3. Попытать счастья с APEX_XXXXXX.WWV_FLOW_DISP_PAGE_PLUGS.DISPLAY_REPORT
которая наверняка пишет во все тот же wpg_docload с открытыми исходными кодами.

Напишите, делитесь.


Это именно та процедура которая срабатывает при нажатии на стандартный апексовкий линк (export to CSV) у региона с репортом (см. мой пример http://apex.oracle.com/pls/apex/f?p=39655).
К сожалению она выдает готовый результат в htp буфер да к томуже вертикальный репорт (первый в моем примере) переделывает в горизонтальный, что никуда не годится.
27 фев 12, 03:52    [12154588]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Тут я вижу 2 варианта. Если не хочется/не можется копировать/исправлять source.

1. Самостоятельно получить source и обработать его, в зависимости от типа региона.
В том числе conditional columns и т.д.
Недостаток: куча недокументированнных вызовов, вроде apex_040100.wwv_flow_page_plugs, постоянные дописывания двигателя.

2. utl_http, подгрузить все csv и сконкатинировать. В ссылках region_id должен быть, который так же легко вычислить.
Недостаток: скорость такой обработки.


Именно так, я выбираю 2 вариант, только конкатинировать я не буду, т.к. захватывать буду всю страницу целиком со всеми тремя сгенерироваными репортами только с Printer_Friendly template'ом (облегченый вид для печати страницы) и дальнейшей вырезкой из буфера с захваченой страницей по UTL_HTTP, ненужного мусора наподобии всяких меню поисов в IR и стилей для таблиц, чтобы окончательный, и очищеный таким образом, html вариант открывать экселем.
Осталось разобраться с загрузкой через UTL_HTTP (проблему описал в раннем посте)
27 фев 12, 04:01    [12154590]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Den999,

csv я еще могу понять, html врятли. Хотя бы pagination. ЭКспортирует 1 из 100 страниц.

Залог успеха:

1. valid url
2.
vCookieList(ii).domain := ltrim( apex_util.host_url, 'http://' );

обрезать еще порт, если не 80
3. для 11g acl. no comments.
27 фев 12, 11:12    [12155416]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Den999,

csv я еще могу понять, html врятли. Хотя бы pagination. ЭКспортирует 1 из 100 страниц.

Залог успеха:

1. valid url
2.
vCookieList(ii).domain := ltrim( apex_util.host_url, 'http://' );

обрезать еще порт, если не 80
3. для 11g acl. no comments.


вырезка порта помогла, спасибо.
и вставил в ваш пример после строчки "OWA_UTIL.mime_header ( 'text/html', FALSE);"
" htp.p('Content-Disposition: attachment; filename="test.htm"');"
чтобы выкидывал диалог "save/open file"

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

сейчас разбераюсь почему при вызове всего этого из "On Load - Before Header" как процедуру выкидывает:
ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1130 ORA-24247: network access denied by access control list (ACL)

вызов через анонимный блок в "On Load - Before Header" - никаких ошибок :(
27 фев 12, 16:53    [12158681]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
с ACL разобрался, надо было добавить право из моей схемы работать с сетью:

BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('/sys/acls/power_users.xml', 'TELEMETRIJA3', TRUE, 'connect');
END;

процедуру ехпорта страницы дописал с возможностью вырезать мусор посредством REGEXP_REPLACE
кому интересно:

CREATE OR REPLACE PROCEDURE get_page IS

 vURL VARCHAR2(255);
 vBlob BLOB;
 vClob CLOB;
 vCookieNameList owa_cookie.vc_arr;
 vCookieValueList owa_cookie.vc_arr;
 vCookieCount INTEGER;
 vCookieList utl_http.cookie_table;
 vRequest utl_http.req;
 vResponse utl_http.resp;
 vPiece VARCHAR2(32767);
 n1 NUMBER := 1;
 n2 NUMBER := 1;
 convert_warn INTEGER;
 lang_context INTEGER := dbms_lob.default_lang_ctx;
 csid INTEGER := dbms_lob.default_csid;

BEGIN
 htp.init;
 vURL := apex_util.host_url('SCRIPT')||'f?p='||v('APP_ID')||':'||v('APP_PAGE_ID')||':' ||v('APP_SESSION')|| '::NO::::YES'; -- обращение к странице с которой эта процедура и вызвана с установкой Print_Friendly Template'а
 owa_cookie.get_all
   ( names    => vCookieNameList
   , vals     => vCookieValueList
   , num_vals => vCookieCount
   );
 FOR i IN 1 .. vCookieNameList.COUNT LOOP
  vCookieList(i).name   := vCookieNameList(i);
  vCookieList(i).value  := vCookieValueList(i);
  vCookieList(i).domain := REGEXP_REPLACE(LTRIM(apex_util.host_url, 'http://'), '\:\d{1,5}'); -- вырезка порта и "http://" из хоста
  vCookieList(i).path   := '/';
 END LOOP;
 utl_http.add_cookies(vCookieList);

 vRequest := utl_http.begin_request(vURL);
 utl_http.set_header(vRequest, 'User-Agent', UPPER(owa_util.get_cgi_env('HTTP_USER_AGENT')) );
 vResponse := utl_http.get_response(vRequest);

 dbms_lob.createtemporary(vClob, FALSE);
 LOOP
  BEGIN
   utl_http.read_text(vResponse, vPiece);
   dbms_lob.writeAppend
     ( lob_loc => vClob
     , amount  => LENGTH(vPiece)
     , buffer  => vPiece
     );
  EXCEPTION WHEN utl_http.END_OF_BODY THEN EXIT;
  END;
 END LOOP;
 utl_http.end_response(vResponse);

 FOR c IN (SELECT * FROM wwv_page_pattern ORDER BY wpp_id) LOOP
  vClob := REGEXP_REPLACE(vClob, c.wpp_from, c.wpp_to, modifier => 'n'); -- вырезка html мусора из буфера с содержимым страныцы (wwv_page_pattern - моя табличка в которой я и храню что надо вырезать)
 END LOOP;
 vClob := '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head><body>'||vClob||'</body></html>';

 dbms_lob.createtemporary(vBlob, FALSE);
 dbms_lob.CONVERTTOBLOB(vBlob, vClob, dbms_lob.lobmaxsize, n1, n2, csid, lang_context, convert_warn);

 owa_util.mime_header('text/html; charset=UTF-8', FALSE);
  htp.p('Content-Disposition: attachment; filename="report.htm"');
  htp.p ('Content-length: '||dbms_lob.getlength(vBlob));
 owa_util.http_header_close;
 wpg_docload.download_file(vBlob);
 apex_application.stop_apex_engine;
END;
/


результатом доволен, все выглядит приемлемо и главно в одной экселевской закладке :)

SvDev, спасибо за идии и советы!

P.S.
паралельно вел ветку на ораклавском форуме https://forums.oracle.com/forums/thread.jspa?messageID=10167705�
там кстати есть стоящее предложение с плугином, кого интересует экспорт в чисто экселевский формат репортов любого типа http://www.apex-plugin.com/oracle-apex-plugins/process-type-plugin/reports-2-excel-xml_110.html
1 мар 12, 02:36    [12174146]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1943
Den999,

Вообще говоря нужно было взять плагин и немного допрограммировать его. имхо.
1 мар 12, 09:37    [12174591]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт нескольких отчетов одновременно  [new]
Den999
Member

Откуда:
Сообщений: 14
SvDev
Den999,

Вообще говоря нужно было взять плагин и немного допрограммировать его. имхо.


Была такая мысль, но побоялся что закопаюсь надолго в недокументированых пакетах и таблицах апекса.
Так как мне нужна была точная копия страницы как есть, после того как пользователь выполнит все ему нужные телодвижения в плане сортировки, фильтровки, да еще и в конце отчета нужно чтоб попали агрегированые данные.
А в плугин на данный момент может только тупо взять сорс и вывести его результат, да вертикальный репорт он показывает как горизонтальный. Просто не было времени на разбирание и переделку, но решение интересное, когда нибудь и до него дойдут руки.
1 мар 12, 14:45    [12177185]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Экспорт нескольких отчетов одновременно  [new]
Алексей2408
Member

Откуда:
Сообщений: 4
Den999,

Подскажите, пожалуйста, у меня стоит похожая задача (есть несколько репортов на странице, необходимо их вывести на вкладку
Excel). Я так понимаю, Ваша процедура имеет завершенный вид. Как вы ее подключаете?

Есть ли у Вас возможность показать, что у Вас получилось в результате на примере Вашего приложения, изложенного в теме выше?
3 окт 17, 15:50    [20839373]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle APEX Ответить