Jump to content
Fórum Script Brasil
  • 0

Extração de dados para planilha excel


Sergiolfj

Question

Criei uma procedure que recebe como parametro apenas o caminho onde os arquivos deveriam ser gerados. A principio seria simples, são duas queries onde a segunda trabalha com o resultado da primeira.

A primeira query traz o código de todos os perfis existentes na base e cria um arquivo excel para cada código, a segunda query pegaria o codigo de cada perfil e buscaria todas as funções vinculadas a ele jogando o reultado para o excel correspondente. Porém isso não ocorre, e a planilha sai com a fomatação desconfigurada. Segue o codig que utilizei:

create or replace procedure TS.SEGLOG_REVALIDA_PERFIS(p_diretorio in VARCHAR) is

v_caminho varchar2(2000);

v_data_ini_aux varchar2(10);

v_nome_arquivo1 varchar2(100);

v_diretorio varchar2(1000);

simprime varchar(1);

-- Pacote para trabalhar com arquivo

fhandler utl_file.file_type;

begin

simprime := 'S';

v_diretorio := p_diretorio;

v_data_ini_aux := to_char(sysdate , 'yyyymmdd');

---------------------------------------------

-- LISTA PERFIS DO SISTEMA -

--------------------------------------------

FOR PERFIL_DATA IN (SELECT COD_PERFIL

FROM TS_SEC.PERFIL)

LOOP

v_nome_arquivo1 := PERFIL_DATA.COD_PERFIL || '.csv';

fhandler := utl_file.fopen(v_diretorio, v_nome_arquivo1, 'w');

---------------------------------------------

-- LISTA AS FUNCOES DE CADA PERFIL -

--------------------------------------------

begin

for c_cursor in (SELECT AU.COD_FUNCAO

, MO.NOM_MODULO

, FU.TXT_TITULO_FUNCAO

, AU.IND_INCLUSAO

, AU.IND_ATUALIZACAO

, AU.IND_EXCLUSAO

, AU.IND_CONSULTA

, AU.IND_ESPECIAL

, AU.IND_EXECUCAO

FROM TS_SEC.AUTORIZACAO_PERFIL AU

, TS_SEC.FUNCAO FU

, TS_SEC.MODULO MO

WHERE AU.COD_PERFIL = PERFIL_DATA.COD_PERFIL

AND FU.COD_FUNCAO = AU.COD_FUNCAO

AND AU.COD_MODULO = MO.COD_MODULO

AND FU.COD_MODULO = MO.COD_MODULO)

loop

if simprime = 'S'

then

utl_file.put_line(fhandler, '<html>');

utl_file.put_line(fhandler, '<style type="text/css">');

utl_file.put_line(fhandler, ' .FmtTexto {mso-number-format:\@}');

utl_file.put_line(fhandler, '</style>');

utl_file.put_line(fhandler, '<body >');

utl_file.put_line(fhandler, '<table width="100%" border="1" cellspacing="0" cellpadding="0">');

utl_file.put_line(fhandler, '<tr>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>CODIGO_FUNCAO</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>NOME_MODULO</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>TITULO_FUNCAO</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>INCLUI</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>ATUALIZA</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>EXCLUI</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>CONSULTA</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>FUNCAO_ESPECIAL</b></td>');

utl_file.put_line(fhandler, '<td bgcolor="ccffcc"><b>EXECUTA</b></td>');

utl_file.put_line(fhandler, '</tr>');

simprime := 'N';

end if;

utl_file.put_line(fhandler, '<tr>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.cod_funcao || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.nom_modulo || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.txt_titulo_funcao || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_inclusao || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_atualizacao || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_exclusao || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_consulta || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_especial || '</td>');

utl_file.put_line(fhandler, ' <td >' || c_cursor.ind_execucao || '</td>');

utl_file.put_line(fhandler, '</tr>');

end loop;

end;

utl_file.put_line(fhandler, ' </body></html>');

utl_file.fclose(fhandler);

end loop;

end;

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...