- Este tópico contém 16 respostas, 6 vozes e foi atualizado pela última vez 17 anos, 4 meses atrás por
felipeldm.
-
AutorPosts
-
30 de outubro de 2008 às 6:11 pm #83419
felipeldm
ParticipantePrezados 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….
30 de outubro de 2008 às 6:28 pm #83421Rodrigo Mesquita
ParticipanteFelipe 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.
30 de outubro de 2008 às 7:05 pm #83423Regis Araujo
ParticipanteOla 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 EXCELAPP := 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 LOOPARGS := 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.htmlAbraços….
30 de outubro de 2008 às 9:48 pm #83424Ricardo Portilho Proni
ParticipanteO SQL Developer faz isso e é gratuito.
31 de outubro de 2008 às 5:22 pm #83428leo_jf
ParticipanteComo 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/
[]s31 de outubro de 2008 às 5:52 pm #83430rerodrig
ParticipanteEu tenho um exemplo de como gerar excel direto do plsql, se precisar passa email que eu envio…falow
31 de outubro de 2008 às 5:56 pm #83431Rodrigo Mesquita
ParticipanteTenta mandar aqui pro grupo esse exemplo pra ficar como documentação
31 de outubro de 2008 às 6:00 pm #83432felipeldm
ParticipanteTudo 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
31 de outubro de 2008 às 6:01 pm #83433felipeldm
ParticipanteDesculpem o flood mais não vi o post do rerodrig.
Meu caro, meu e-mail é:felipe.ldm@gmail.com
felipe@abstratos.comAguardo 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]
31 de outubro de 2008 às 6:05 pm #83435rerodrig
ParticipanteSó 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!
31 de outubro de 2008 às 6:06 pm #83436Rodrigo Mesquita
Participantererodrig, se puder mandar para mim, tambem estou interessado nesse exemplo
31 de outubro de 2008 às 6:26 pm #83438felipeldm
ParticipanteObrigado 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=53297e8dGrande abraço e obrigado mais uma vez!!
Felipe Lima
31 de outubro de 2008 às 6:28 pm #83439Rodrigo Mesquita
Participanteobrigado rerodrig,
dei uma olhada na documentação e achei bem interessante. Tenta enviar aqui pro pessoal do grupo para incluirem na área de downloads
31 de outubro de 2008 às 8:06 pm #83441Ricardo Portilho Proni
ParticipanteNão serve um SPOOL separado por vírgulas?
Ele pdoeria ser importando no excel e feito com um simples SELECT.31 de outubro de 2008 às 8:12 pm #83442rerodrig
ParticipanteBlz…Felipe, não tem problema e Rodrigo, vou enviar para algum administrador…
Renato Rodrigues
-
AutorPosts
- Você deve fazer login para responder a este tópico.