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;