Pular para o conteúdo
  • Este tópico contém 16 respostas, 6 vozes e foi atualizado pela última vez 17 anos, 4 meses atrás por felipeldm.
Visualizando 15 posts - 1 até 15 (de 17 do total)
  • Autor
    Posts
  • #83419
    felipeldm
    Participante

      Prezados bom dia!!!

      Venho realizando um trabalho de pesquisa em cima deste assunto. Deparei-me com um imenso mercado: “DATA EXPORT”. Existem mil softwares na internet que prometem exportar resultado de queries em vários formatos, contudo, são todos pagos.

      Já consegui, via procedure, exportar para várias extensões, inclusive CSV. Agora para XLS confesso que está dificil…

      Será que alguém pode me ajudar???

      PS: Gostaria de um script cru, pois não uso nenhuma aplicação de forms ou apex etc….

      #83421
      Rodrigo Mesquita
      Participante

        Felipe não conheço ainda uma procedure que faça isso, mais da pra conectar facilmente no oracle pelo próprio excel, realizar uma consulta e exibir o resultado direto na planilha.

        #83423
        Avatar photoRegis Araujo
        Participante

          Ola Felipe,

          Bom, como o Rodrigo falou, procedure é dificil, mas sei que tem como fazer utilizando o Objeto OLE no oracle e adaptando o script abaixo para gerar atraves de uma procedure.

          ————————–

          CREATE OR REPLACE PROCEDURE EXCEL_FILE IS

          CURSOR DTL IS SELECT * FROM TABELA;

          ROW_NUM NUMBER;
          COL_NUM NUMBER;
          CELL_VAL NUMBER;

          APP_ACC OLE2.OBJ_TYPE;
          DBS OLE2.OBJ_TYPE;
          DC OLE2.OBJ_TYPE;
          ARGS_ACC OLE2.OBJ_TYPE;
          APP OLE2.OBJ_TYPE;
          ARGS OLE2.LIST_TYPE;
          ARGS2 OLE2.LIST_TYPE;
          WS OLE2.OBJ_TYPE;
          WB OLE2.OBJ_TYPE;
          WSS OLE2.OBJ_TYPE;
          WBS OLE2.OBJ_TYPE;
          CELL OLE2.OBJ_TYPE;
          CTR1 NUMBER := 0;
          CTR2 NUMBER := 0;
          CTR3 PLS_INTEGER := 0;
          M_ROW NUMBER:=1;
          M_LEN NUMBER:=0;
          M_FLAG NUMBER:=0;

          BEGIN
          —————- INITIALISE EXCEL

          APP := OLE2.CREATE_OBJ(‘EXCEL.APPLICATION’);
          OLE2.SET_PROPERTY(APP, ‘VISIBLE’,’TRUE’);
          WBS := OLE2.GET_OBJ_PROPERTY(APP,’WORKBOOKS’);
          WB := OLE2.INVOKE_OBJ(WBS,’ADD’);
          WSS := OLE2.GET_OBJ_PROPERTY(APP,’WORKSHEETS’);
          WS := OLE2.INVOKE_OBJ(WSS,’ADD’);


          FOR I IN 1..2 LOOP

          ARGS := OLE2.CREATE_ARGLIST;
          OLE2.ADD_ARG(ARGS, M_ROW); — ROW
          OLE2.ADD_ARG(ARGS, I); — COLUMN
          CELL := OLE2.GET_OBJ_PROPERTY(WS,’CELLS’, ARGS);
          OLE2.DESTROY_ARGLIST(ARGS);

          IF I=1 THEN
          OLE2.SET_PROPERTY(CELL, ‘VALUE’,’AUTH. DATE’);
          ELSIF I=2 THEN
          OLE2.SET_PROPERTY(CELL, ‘VALUE’,’ICD DOC.NO’);
          END IF;

          OLE2.RELEASE_OBJ(CELL);
          END LOOP;
          — HEADING

          — DATA

          FOR J IN DTL LOOP

          FOR I IN 1..2 LOOP

          — REPEAT ROW
          ARGS := OLE2.CREATE_ARGLIST;
          OLE2.ADD_ARG(ARGS, M_ROW); — ROW
          OLE2.ADD_ARG(ARGS, I); — COLUMN
          CELL := OLE2.GET_OBJ_PROPERTY(WS,’CELLS’, ARGS);
          OLE2.DESTROY_ARGLIST(ARGS);

          IF I = 1 THEN
          OLE2.SET_PROPERTY(CELL, ‘VALUE’,J.AUTH_DT);
          ELSIF I=2 THEN
          OLE2.SET_PROPERTY(CELL, ‘VALUE’,J.ICD_DOC_NO);
          END IF;
          END LOOP;
          END LOOP;

          OLE2.RELEASE_OBJ(WBS);
          OLE2.RELEASE_OBJ(WS);
          OLE2.RELEASE_OBJ(WBS);
          OLE2.RELEASE_OBJ(WB);
          OLE2.RELEASE_OBJ(APP);

          END;

          —————————-
          Link Ole: http://www.oracle.com/technology/tech/w … index.html

          Abraços….

          #83424
          Ricardo Portilho Proni
          Participante

            O SQL Developer faz isso e é gratuito.

            #83428
            leo_jf
            Participante

              Como o Ricardo falou, mais fácil usar uma ferramente RAD mesmo.
              O PL/SQL developer também faz isso, e você tem a opção de exportar com o Head da consulta.
              A ferramente é free durante 30 dias.
              Outra ferramenta que sempre foi muito boa é o Toad for Oracle. Atualmente na versão 9.5 – paga está excelente e com muitos recursos, inclusive exportar para excel.
              Vale a pena dar uma olhada nas duas ferramentas, pois é mais produtivo que criar procedimento em banco para tal função.

              Links: http://www.quest.com/
              http://www.allroundautomations.com/
              []s

              #83430
              rerodrig
              Participante

                Eu tenho um exemplo de como gerar excel direto do plsql, se precisar passa email que eu envio…falow

                #83431
                Rodrigo Mesquita
                Participante

                  Tenta mandar aqui pro grupo esse exemplo pra ficar como documentação

                  #83432
                  felipeldm
                  Participante

                    Tudo bem amigos, eu conheço o PL/SQL Developer e já o utilizo há algum tempo. O problema é o seguinte:

                    * Esta consulta que tenho que realizar obrigatoriamente deve ser feita às 03:00 da manhã e depois de realizada, exportada para o excel e enviada para o e-mail do chefe do setor.

                    Agora já imaginaram eu acordar todos os dia 3 da manhã, conectar na VPN da empresa pra realizar a consulta, exportar e mandar por e-mail???

                    Eu conseguir criar uma procedure que gera o arquivo .CSV, contudo, quando se mexe em valores monetários o CSV deixa a desejar pois não formata os números de forma correta => 19,123547 se transforma em 19.123.547, ou seja de dezenove reais eu pularia pra 19 milhões. Por isso CSV não dá certo.

                    Depois eu criei outra procedure para pegar o arquivo gerado e enviar por email. Juntei isso tudo em um JOB e vualá, processo feito com sucesso.

                    Agora só falta gerar o arquivo XLS, que vem sendo meu “calo” até agora.
                    Obrigado mais uma vez,

                    Felipe Lima

                    #83433
                    felipeldm
                    Participante

                      Desculpem o flood mais não vi o post do rerodrig.
                      Meu caro, meu e-mail é:

                      felipe.ldm@gmail.com
                      felipe@abstratos.com

                      Aguardo anciosamente sua solução,

                      Felipe Lima

                      [quote=”rerodrig”:242l13w8]Eu tenho um exemplo de como gerar excel direto do plsql, se precisar passa email que eu envio…falow[/quote]

                      #83435
                      rerodrig
                      Participante

                        Só uma breve explicação, esse exemplo que tenho aqui, nada mais é do que uma procedure que escreve em um arquivo texto na “linguagem” do excel, denominada “Symbolic Link (SYLK)”…falow!

                        #83436
                        Rodrigo Mesquita
                        Participante

                          rerodrig, se puder mandar para mim, tambem estou interessado nesse exemplo

                          rmesquita@stefanini.com.br
                          rodrigomotamesquita@gmail.com

                          #83438
                          felipeldm
                          Participante

                            Obrigado Rerodrig!!!
                            Não testei ainda, mas agradeço pelo seu interesse.

                            Se não se importa, só disponibilizando o bloco para o pessoal:
                            http://www.4shared.com/file/69140732/fc … d=53297e8d

                            Grande abraço e obrigado mais uma vez!!

                            Felipe Lima

                            #83439
                            Rodrigo Mesquita
                            Participante

                              obrigado rerodrig,

                              dei uma olhada na documentação e achei bem interessante. Tenta enviar aqui pro pessoal do grupo para incluirem na área de downloads

                              #83441
                              Ricardo Portilho Proni
                              Participante

                                Não serve um SPOOL separado por vírgulas?
                                Ele pdoeria ser importando no excel e feito com um simples SELECT.

                                #83442
                                rerodrig
                                Participante

                                  Blz…Felipe, não tem problema e Rodrigo, vou enviar para algum administrador…

                                  Renato Rodrigues

                                Visualizando 15 posts - 1 até 15 (de 17 do total)
                                • Você deve fazer login para responder a este tópico.