Olá Mestres!
Gostaria de saber se alguém conhece alguma maneira de interagir foms 6i com excel ou seja de dentro de uma aplicação forms eu quer gerar e abrir um arquivo no excel formatado.
Ecxel.pll alguém sabe como funciona/? A sua finalidade e para oque estou procurando?
muito Obrigado
EXCEL COM FORMS
-
- Rank: Analista Júnior
- Mensagens: 88
- Registrado em: Sex, 18 Ago 2006 11:13 am
- Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com
MSN / TALK - roberto.fernandes@gmail.com
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Brother,
Tem sim, como você gerar uma planilha no excel.
Eu enviei um fmb pro dr_gori e acho q ele vai estar colocando no site para download.
Abraços,
Trevisolli.
Tem sim, como você gerar uma planilha no excel.
Eu enviei um fmb pro dr_gori e acho q ele vai estar colocando no site para download.
Abraços,
Trevisolli.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Valeu Dr Gori...
Por disponibilizar para a galera.
Tendo mais, envio à vocês.
Por disponibilizar para a galera.
Tendo mais, envio à vocês.
- tiagodutra
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Qua, 19 Jan 2011 2:50 pm
- Localização: Novo Hamburgo - RS
Tiago
Bom dia!!!
Pessoal estou tentando utilizar essa funcionalidade, baixei o form e ajustei o cursor e os campos para uma tabela de teste somente para ver se funcionaria, mas ele da um erro muito extranho ORA-305501, fui ao google mas não consegui entender o que esse erro quer dizer.
Alguém ai saberia me ajudar estou utilizando o banco 11g e o forms 10 eu vi no post que foi desenvolvido pro 6i pode ser este o motivo?
Desde já agradeço a ajuda e fico no aguardo de uma luz...
Pessoal estou tentando utilizar essa funcionalidade, baixei o form e ajustei o cursor e os campos para uma tabela de teste somente para ver se funcionaria, mas ele da um erro muito extranho ORA-305501, fui ao google mas não consegui entender o que esse erro quer dizer.
Alguém ai saberia me ajudar estou utilizando o banco 11g e o forms 10 eu vi no post que foi desenvolvido pro 6i pode ser este o motivo?
Desde já agradeço a ajuda e fico no aguardo de uma luz...
-
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Ter, 02 Out 2012 7:32 am
José Fabiano Martinatti
Analista de Sistemas Cia Muller de Bebidas
josemartinatti@ciamuller.com.br
Analista de Sistemas Cia Muller de Bebidas
josemartinatti@ciamuller.com.br
Bom dia,
Eu fiz um PCK com várias funções para exportação de informação para o Excel, vou fazer uns acertos e coloco o codigo aqui pra vocês utilizarem.
Eu fiz um PCK com várias funções para exportação de informação para o Excel, vou fazer uns acertos e coloco o codigo aqui pra vocês utilizarem.
- tiagodutra
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Qua, 19 Jan 2011 2:50 pm
- Localização: Novo Hamburgo - RS
Tiago
Opa PCKs são sempre bem vindas *-* valeu a força ai 

-
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Ter, 02 Out 2012 7:32 am
José Fabiano Martinatti
Analista de Sistemas Cia Muller de Bebidas
josemartinatti@ciamuller.com.br
Analista de Sistemas Cia Muller de Bebidas
josemartinatti@ciamuller.com.br
Segue abaixo:
Package Spec
Package Body:
Package Spec
PACKAGE PCK_EXCEL IS
--variáveis utilizadas em todos os processos da exportação do excel
APLICACAO OLE2.OBJ_TYPE;
PASTA_TRAB OLE2.OBJ_TYPE;
PASTA OLE2.OBJ_TYPE;
PLANILHA OLE2.OBJ_TYPE;
PLANS OLE2.OBJ_TYPE;
ARGS OLE2.LIST_TYPE;
OPCOES OLE2.LIST_TYPE;
CELULA OLE2.LIST_TYPE;
PAGINA OLE2.LIST_TYPE;
-- variavel utilizada para geração do relatório
PL_ID PARAMLIST;
-- variáveis Geração .bat
ARQUIVO_BAT TEXT_IO.FILE_TYPE;
PROCEDURE PRC_INICIALIZA
(
CABECALHO VARCHAR2,
RODAPE VARCHAR2
);
PROCEDURE PRC_NUM_PLAN
(
QTDE NUMBER
);
PROCEDURE PRC_PLAN_NOME
(
NOME_PLANILHA IN VARCHAR2,
NOVO_NOME IN VARCHAR2
);
PROCEDURE PRC_PLANILHA
(
NOME_PLANILHA IN VARCHAR2
);
PROCEDURE PRC_BORDA
(
COLUNA IN VARCHAR2, -- A,B,C,D,...
LINHA IN NUMBER, -- 1,2,3,4,...
TIPO_LINHA IN NUMBER := 1, -- 1,2,3,4,5,6,7,8
LARGURA IN NUMBER := 2, -- 1,2,3,4
COR IN NUMBER := 1, -- 1,2,3,4,...
BORDA_SUPERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_INFERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_ESQUERDA IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_DIREITA IN VARCHAR2 := 'S' -- S PARA SIM OU N PARA NÃO
);
PROCEDURE PRC_BORDA_SEQUENCIA
(
COL_INICIO IN VARCHAR2, -- A,B,C,D,...
LIN_INICIO IN NUMBER, -- 1,2,3,4,...
COL_FIM IN VARCHAR2, -- A,B,C,D,...
LIN_FIM IN NUMBER, -- 1,2,3,4,...
TIPO_LINHA IN NUMBER := 1, -- 1,2,3,4,5,6,7,8
LARGURA IN NUMBER := 2, -- 1,2,3,4
COR IN NUMBER := 1, -- 1,2,3,4,...
BORDA_SUPERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_INFERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_ESQUERDA IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_DIREITA IN VARCHAR2 := 'S' -- S PARA SIM OU N PARA NÃO
);
PROCEDURE PRC_MESCLAR
(
COL_INICIAL IN VARCHAR2,
LIN_INICIAL IN NUMBER,
COL_FINAL IN VARCHAR2,
LIN_FINAL IN NUMBER
);
PROCEDURE PRC_PREENCHE
(
COLUNA VARCHAR2, -- coluna
LINHA NUMBER, -- linha
TITULO VARCHAR2, -- o que vai ser inserido na célula
COL_TAMANHO NUMBER, -- tamanho da coluna
FONT_NOME VARCHAR2, -- nome da fonte
FONT_TAMANHO VARCHAR2, -- tamanho da fonte
FONT_NEGRITO BOOLEAN DEFAULT FALSE, -- deve ser bold?
FONT_ITALICO BOOLEAN DEFAULT FALSE, -- deve ser itálico?
COR_FONTE NUMBER DEFAULT 0, -- índice da cor da fonte
ALINHAMENTO VARCHAR DEFAULT 'ESQUERDA', -- alinhamento horizontal do texto
FORMATO VARCHAR2 DEFAULT NULL, -- formato de entrada do dado ('Geral', '0','#.##0,00', 'dd/mm/aa', 'd/m/aa h:mm AM/PM', 'DD/MM/AAAA')
COR_FUNDO NUMBER DEFAULT 0,
V_ORIENTACAO NUMBER DEFAULT 0 -- índice da cor de fundo
);
PROCEDURE PRC_PREENCHE_2
(
COLUNA VARCHAR2, -- coluna
LINHA NUMBER, -- linha
TITULO VARCHAR2, -- o que vai ser inserido na célula
COL_TAMANHO NUMBER, -- tamanho da coluna
FONT_NOME VARCHAR2, -- nome da fonte
FONT_TAMANHO VARCHAR2, -- tamanho da fonte
FONT_NEGRITO BOOLEAN, -- deve ser bold?
FONT_ITALICO BOOLEAN, -- deve ser itálico?
COR_FONTE NUMBER, -- índice da cor da fonte
ALINHAMENTO VARCHAR, -- alinhamento horizontal do texto
FORMATO VARCHAR2 DEFAULT NULL, -- formato de entrada do dado ('Geral', '0','#.##0,00', 'dd/mm/aa', 'd/m/aa h:mm AM/PM')
COR_FUNDO NUMBER DEFAULT 0, -- índice da cor de fundo
COL_FINAL VARCHAR2, -- coluna final para mesclar
LIN_FINAL NUMBER, -- linha final para mesclar
BORDAS VARCHAR2 DEFAULT 'N',
V_ORIENTACAO NUMBER DEFAULT 0
);
PROCEDURE PRC_PROTEGE
(
V_PLAN VARCHAR2
);
PROCEDURE PRC_FINALIZA
(
NOME_ARQUIVO VARCHAR2 DEFAULT 'Eportacao.xls'
);
FUNCTION FUN_SALVAR_ARQUIVO
(
NOME_ARQ_padrão VARCHAR2,
TIPO_ARQ VARCHAR2
) RETURN VARCHAR2;
END;
Package Body:
PACKAGE BODY PCK_EXCEL IS
-- inicializa a exportação do excel
PROCEDURE PRC_INICIALIZA
(
CABECALHO VARCHAR2,
RODAPE VARCHAR2
)
IS
BEGIN
APLICACAO := OLE2.CREATE_OBJ('Excel.Application');
OLE2.SET_PROPERTY(APLICACAO, 'Visible', TRUE);
PASTA_TRAB := OLE2.GET_OBJ_PROPERTY(APLICACAO, 'Workbooks');
PASTA := OLE2.INVOKE_OBJ(PASTA_TRAB, 'Add');
PLANILHA := OLE2.GET_OBJ_PROPERTY(PASTA, 'Worksheets');
--- apaga todas as planilhas, deixando apenas a Plan1
OLE2.SET_PROPERTY(APLICACAO, 'DisplayAlerts', FALSE);
WHILE OLE2.GET_NUM_PROPERTY(PLANILHA , 'Count') > 1
LOOP
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 2);
PLANS := OLE2.GET_OBJ_PROPERTY(PASTA, 'Worksheets', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.INVOKE(PLANS, 'Delete');
OLE2.RELEASE_OBJ(PLANS);
END LOOP;
OLE2.SET_PROPERTY(APLICACAO, 'DisplayAlerts', TRUE);
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 1);
PLANS := OLE2.GET_OBJ_PROPERTY(PASTA, 'Worksheets', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.INVOKE(PLANS, 'Select');
--- Cabeçalho e Rodape da Planilha
PAGINA := OLE2.GET_OBJ_PROPERTY(PLANS, 'PageSetup');
OLE2.SET_PROPERTY(PAGINA, 'CenterHeader', '&"Arial,Bold" &12'||CABECALHO);
OLE2.SET_PROPERTY(PAGINA, 'CenterFooter', '&"Arial,Bold" &08'||RODAPE);
END;
-- números de planilhas
PROCEDURE PRC_NUM_PLAN
(
QTDE NUMBER
)
IS
I NUMBER;
NOME_ANT NUMBER;
NOME_NOVO NUMBER;
BEGIN
IF QTDE > 1 THEN
NOME_ANT := QTDE;
NOME_NOVO := QTDE;
PRC_PLAN_NOME('Plan1', 'Plan_' || QTDE);
-- cria as novas planilhas
FOR I IN 2..QTDE LOOP
-- acrescenta planilhas
PLANS := OLE2.GET_OBJ_PROPERTY (PASTA, 'Worksheets');
PLANILHA := OLE2.INVOKE_OBJ (PLANS,'Add');
END LOOP;
-- altera o nome das planilhas criadas
FOR I IN 1..QTDE-1 LOOP
NOME_NOVO := QTDE - I + 3;
PRC_PLAN_NOME('Plan' || NOME_NOVO, 'Plan_' || I);
END LOOP;
-- retira o _ do nome das Planilhas
FOR I IN 1..QTDE LOOP
PRC_PLAN_NOME('Plan_' || I, 'Plan' || I);
END LOOP;
END IF;
END;
-- defini em qual planilha vai ser colocado os valores
PROCEDURE PRC_PLANILHA
(
NOME_PLANILHA IN VARCHAR2 -- máximo 30 caracteres
)
IS
BEGIN
ARGS := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG( ARGS, NOME_PLANILHA ) ;
PLANILHA := OLE2.GET_OBJ_PROPERTY( PASTA, 'WORKSHEETS', ARGS ) ;
OLE2.DESTROY_ARGLIST( ARGS ) ;
END;
PROCEDURE PRC_PLAN_NOME
(
NOME_PLANILHA IN VARCHAR2,
NOVO_NOME IN VARCHAR2
)
IS
BEGIN
PRC_PLANILHA(NOME_PLANILHA);
ole2.set_property(PLANILHA,'Name',NOVO_NOME);
END;
-- insere borda na celula informada
PROCEDURE PRC_BORDA
(
COLUNA IN VARCHAR2, -- A,B,C,D,...
LINHA IN NUMBER, -- 1,2,3,4,...
TIPO_LINHA IN NUMBER := 1, -- 1,2,3,4,5,6,7,8
LARGURA IN NUMBER := 2, -- 1,2,3,4
COR IN NUMBER := 1, -- 1,2,3,4,...
BORDA_SUPERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_INFERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_ESQUERDA IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_DIREITA IN VARCHAR2 := 'S' -- S PARA SIM OU N PARA NÃO
)
IS
BORDERS OLE2.LIST_TYPE;
V_TIPO_LINHA NUMBER;
V_LARGURA NUMBER;
BEGIN
/*
-------------------------------------------------------BORDAS
xlDiagonalDown constant number(5):= 5;
xlDiagonalUp constant number(5):= 6;
xlEdgeBottom constant number(5):= 9; --BORDA DE BAIXO
xlEdgeLeft constant number(5):= 7; --BORDA DA ESQUERDA
xlEdgeRight constant number(5):= 10; --BORDA DA DIREITA
xlEdgeTop constant number(5):= 8; --BORDA DE CIMA
xlInsideHorizontal constant number(5):= 12;
xlInsideVertical constant number(5):= 11;
*/
-- DEFINE OS VALORES CORRETOS DOS TIPOS DE LINHA
IF TIPO_LINHA = 1 THEN V_TIPO_LINHA := 1; END IF;
IF TIPO_LINHA = 2 THEN V_TIPO_LINHA := -4115; END IF;
IF TIPO_LINHA = 3 THEN V_TIPO_LINHA := 4; END IF;
IF TIPO_LINHA = 4 THEN V_TIPO_LINHA := 5; END IF;
IF TIPO_LINHA = 5 THEN V_TIPO_LINHA := -4118; END IF;
IF TIPO_LINHA = 6 THEN V_TIPO_LINHA := -4119; END IF;
IF TIPO_LINHA = 7 THEN V_TIPO_LINHA := -4142; END IF;
IF TIPO_LINHA = 8 THEN V_TIPO_LINHA := 13; END IF;
--DEFINE OS VALORES CORRETOS DA LARGURA DA LINHA
IF LARGURA = 3 THEN
V_LARGURA := -4138;
ELSE
V_LARGURA := LARGURA;
END IF;
-- CONFIGURA A CÉLULA QUE IRÁ RECEBER A BORDA
OPCOES := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OPCOES, LINHA);
OLE2.ADD_ARG(OPCOES, COLUNA);
CELULA := OLE2.GET_OBJ_PROPERTY(PLANILHA, 'Cells', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
--CONFIGURAÇÃO BORDA ESQUERDA
IF UPPER(BORDA_ESQUERDA) = 'S' THEN
OPCOES:= ole2.create_arglist;
ole2.add_arg(OPCOES, 7);
borders := OLE2.GET_OBJ_PROPERTY(CELULA, 'Borders', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
OLE2.SET_PROPERTY(borders, 'LineStyle', V_TIPO_LINHA);
OLE2.SET_PROPERTY(borders, 'Weight', V_LARGURA);
OLE2.SET_PROPERTY(borders, 'ColorIndex', COR);
OLE2.RELEASE_OBJ(borders);
END IF;
--CONFIGURAÇÃO BORDA SUPERIOR
IF UPPER(BORDA_SUPERIOR) = 'S' THEN
OPCOES:= ole2.create_arglist;
ole2.add_arg(OPCOES, 8);
borders := OLE2.GET_OBJ_PROPERTY(CELULA, 'Borders', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
OLE2.SET_PROPERTY(borders, 'LineStyle', V_TIPO_LINHA);
OLE2.SET_PROPERTY(borders, 'Weight', V_LARGURA);
OLE2.SET_PROPERTY(borders, 'ColorIndex', COR);
OLE2.RELEASE_OBJ(borders);
END IF;
--CONFIGURAÇÃO BORDA INFERIOR
IF UPPER(BORDA_INFERIOR) = 'S' THEN
OPCOES:= ole2.create_arglist;
ole2.add_arg(OPCOES, 9);
borders := OLE2.GET_OBJ_PROPERTY(CELULA, 'Borders', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
OLE2.SET_PROPERTY(borders, 'LineStyle', V_TIPO_LINHA);
OLE2.SET_PROPERTY(borders, 'Weight', V_LARGURA);
OLE2.SET_PROPERTY(borders, 'ColorIndex', COR);
OLE2.RELEASE_OBJ(borders);
END IF;
--CONFIGURAÇÃO BORDA DIREITA
IF UPPER(BORDA_DIREITA) = 'S' THEN
OPCOES:= ole2.create_arglist;
ole2.add_arg(OPCOES, 10);
borders := OLE2.GET_OBJ_PROPERTY(CELULA, 'Borders', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
OLE2.SET_PROPERTY(borders, 'LineStyle', V_TIPO_LINHA);
OLE2.SET_PROPERTY(borders, 'Weight', V_LARGURA);
OLE2.SET_PROPERTY(borders, 'ColorIndex', COR);
OLE2.RELEASE_OBJ(borders);
END IF;
-- FINALIZA CONFIGURAÇÃO DAS BORDAS
OLE2.RELEASE_OBJ(CELULA);
END;
-- insere borda em uma sequencia informada
PROCEDURE PRC_BORDA_SEQUENCIA
(
COL_INICIO IN VARCHAR2, -- A,B,C,D,... COLUNA PARA INICIAR A BORDA
LIN_INICIO IN NUMBER, -- 1,2,3,4,... LINHA PARA INICIAR A BORDA
COL_FIM IN VARCHAR2, -- A,B,C,D,... COLUNA PARA FINALIZAR A BORDA
LIN_FIM IN NUMBER, -- 1,2,3,4,... LINHA PARA FINALIZAR A BORDA
TIPO_LINHA IN NUMBER := 1, -- 1,2,3,4,5,6,7,8
LARGURA IN NUMBER := 2, -- 1,2,3,4
COR IN NUMBER := 1, -- 1,2,3,4,...
BORDA_SUPERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_INFERIOR IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_ESQUERDA IN VARCHAR2 := 'S', -- S PARA SIM OU N PARA NÃO
BORDA_DIREITA IN VARCHAR2 := 'S' -- S PARA SIM OU N PARA NÃO
)
IS
BEGIN
FOR I IN LIN_INICIO..LIN_FIM LOOP
FOR J IN ASCII(COL_INICIO)-64..ASCII(COL_FIM)-64 LOOP
PRC_BORDA (CHR(J+64), I, TIPO_LINHA, LARGURA, COR, BORDA_SUPERIOR, BORDA_INFERIOR, BORDA_ESQUERDA, BORDA_DIREITA);
END LOOP;
END LOOP;
END;
-- mescla as celulas informadas
PROCEDURE PRC_MESCLAR
(
COL_INICIAL IN VARCHAR2,
LIN_INICIAL IN NUMBER,
COL_FINAL IN VARCHAR2,
LIN_FINAL IN NUMBER
)
IS
COLUMN OLE2.OBJ_TYPE;
ROW OLE2.OBJ_TYPE;
BEGIN
--MESCLAR TITULO
OPCOES := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OPCOES, COL_INICIAL || ':' || COL_FINAL); --COLUNA INICIAL E FINAL DE MESCLAR
COLUMN:= OLE2.GET_OBJ_PROPERTY(PLANILHA,'COLUMNS',OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
OPCOES := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OPCOES, LIN_INICIAL || ':' || LIN_FINAL); --LINHA INICIAL E FINAL DE MESCLAR
ROW := OLE2.GET_OBJ_PROPERTY(COLUMN, 'ROWS', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
OLE2.INVOKE(ROW, 'MERGE');
END;
-- preenche a celula
PROCEDURE PRC_PREENCHE
(
COLUNA VARCHAR2, -- coluna
LINHA NUMBER, -- linha
TITULO VARCHAR2, -- o que vai ser inserido na célula
COL_TAMANHO NUMBER, -- tamanho da coluna
FONT_NOME VARCHAR2, -- nome da fonte
FONT_TAMANHO VARCHAR2, -- tamanho da fonte
FONT_NEGRITO BOOLEAN, -- deve ser bold?
FONT_ITALICO BOOLEAN, -- deve ser itálico?
COR_FONTE NUMBER, -- índice da cor da fonte
ALINHAMENTO VARCHAR, -- alinhamento horizontal do texto
FORMATO VARCHAR2 DEFAULT NULL, -- formato de entrada do dado ('Geral', '0','#.##0,00', 'dd/mm/aa', 'd/m/aa h:mm AM/PM')
COR_FUNDO NUMBER DEFAULT 0,
V_ORIENTACAO NUMBER DEFAULT 0 -- índice da cor de fundo
)
IS
FONT OLE2.OBJ_TYPE;
V_INTERIOR OLE2.OBJ_TYPE;
ALIGN BINARY_INTEGER;
V_COLUNA NUMBER;
BEGIN
V_COLUNA:=ASCII(UPPER(COLUNA))-64;
-- ALINHAMENTO DA CÉLULA
ALIGN := 1;
IF UPPER(ALINHAMENTO) = 'GERAL' THEN ALIGN := 1; END IF;
IF UPPER(ALINHAMENTO) = 'CENTRALIZAR' THEN ALIGN := - 4108; END IF;
IF UPPER(ALINHAMENTO) = 'JUSTIFICAR' THEN ALIGN := - 4130; END IF;
IF UPPER(ALINHAMENTO) = 'ESQUERDA' THEN ALIGN := - 4131; END IF;
IF UPPER(ALINHAMENTO) = 'DIREITA' THEN ALIGN := - 4152; END IF;
IF UPPER(ALINHAMENTO) = 'DITRIBUI' THEN ALIGN := - 4117; END IF;
OPCOES := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OPCOES, LINHA);
OLE2.ADD_ARG(OPCOES, V_COLUNA);
CELULA := OLE2.GET_OBJ_PROPERTY(PLANILHA, 'CELLS', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
-- caso o valor passado seja do tipo número ele troca o . por , no decimal
if FORMATO = '#.##0,00' then
OLE2.SET_PROPERTY(CELULA, 'VALUE', replace(TITULO, '.', ','));
else
OLE2.SET_PROPERTY(CELULA, 'VALUE', TITULO);
end if;
if FORMATO = '#.##0,00_ ;[Vermelho]-#.##0,00 ' then
OLE2.SET_PROPERTY(CELULA, 'VALUE', replace(TITULO, '.', ','));
else
OLE2.SET_PROPERTY(CELULA, 'VALUE', TITULO);
end if;
-- VERIFICA SE FOI PASSADO O TAMANHO DA COLUNA
if COL_TAMANHO is not null then
OLE2.SET_PROPERTY(CELULA, 'COLUMNWIDTH', COL_TAMANHO);
end if;
-- altera a config do texto
FONT := OLE2.GET_OBJ_PROPERTY (CELULA, 'Font');
OLE2.SET_PROPERTY (font, 'Name', FONT_NOME);
OLE2.SET_PROPERTY (font, 'Size', FONT_TAMANHO);
OLE2.SET_PROPERTY (font, 'Bold', FONT_NEGRITO);
OLE2.SET_PROPERTY (font, 'Italic', FONT_ITALICO);
-- ALTERA CORES DA ÁRVORE
OLE2.SET_PROPERTY(font, 'ColorIndex', COR_FONTE); --0,Preto (3, Red)
if Align is not null then
OLE2.SET_PROPERTY(CELULA, 'HorizontalAlignment', Align);
end if;
-- quebra automatica de texto
OLE2.SET_PROPERTY(CELULA, 'WrapText', true);
-- orientação do texto na célula
OLE2.SET_PROPERTY(CELULA, 'Orientation', V_ORIENTACAO);
-- centraliza quando existe mesclagem
OLE2.SET_PROPERTY(CELULA, 'VerticalAlignment', - 4108);
--FORMATO DO NÚMERO
if formato is not null then
OLE2.SET_PROPERTY(CELULA, 'NumberFormat', formato);
END IF;
v_interior := ole2.get_obj_property(CELULA,'Interior');
ole2.set_property(v_interior,'ColorIndex',COR_FUNDO);
ole2.release_obj(v_interior);
OLE2.RELEASE_OBJ(FONT);
OLE2.RELEASE_OBJ(CELULA);
END;
-- preenche celula com mesclagem de celulas e bordas
PROCEDURE PRC_PREENCHE_2
(
COLUNA VARCHAR2, -- coluna
LINHA NUMBER, -- linha
TITULO VARCHAR2, -- o que vai ser inserido na célula
COL_TAMANHO NUMBER, -- tamanho da coluna
FONT_NOME VARCHAR2, -- nome da fonte
FONT_TAMANHO VARCHAR2, -- tamanho da fonte
FONT_NEGRITO BOOLEAN, -- deve ser bold?
FONT_ITALICO BOOLEAN, -- deve ser itálico?
COR_FONTE NUMBER, -- índice da cor da fonte
ALINHAMENTO VARCHAR, -- alinhamento horizontal do texto
FORMATO VARCHAR2 DEFAULT NULL, -- formato de entrada do dado ('Geral', '0','#.##0,00', 'dd/mm/aa', 'd/m/aa h:mm AM/PM')
COR_FUNDO NUMBER DEFAULT 0, -- índice da cor de fundo
COL_FINAL VARCHAR2,
LIN_FINAL NUMBER,
BORDAS VARCHAR2 DEFAULT 'N',
V_ORIENTACAO NUMBER DEFAULT 0
) IS
BEGIN
-- preenche celula
PRC_PREENCHE
(
COLUNA,
LINHA,
TITULO,
COL_TAMANHO,
FONT_NOME,
FONT_TAMANHO,
FONT_NEGRITO,
FONT_ITALICO,
COR_FONTE,
ALINHAMENTO,
FORMATO,
COR_FUNDO,
V_ORIENTACAO
);
-- desenha bordas
IF BORDAS = 'S' THEN
PRC_BORDA_SEQUENCIA
(
COLUNA,
LINHA,
COL_FINAL,
LIN_FINAL,
1,
2,
1,
'S',
'S',
'S',
'S'
);
END IF;
-- mesclagem
IF ((COL_FINAL <> COLUNA) OR (LIN_FINAL <> LINHA)) THEN
PRC_MESCLAR
(
COLUNA,
LINHA,
COL_FINAL,
LIN_FINAL
);
END IF;
END;
-- proteger planilha
PROCEDURE PRC_PROTEGE
(
V_PLAN VARCHAR2
)
IS
BEGIN
PRC_PLANILHA(V_PLAN);
OLE2.SET_PROPERTY(PLANILHA, 'Protect', true);
--OLE2.SET_PROPERTY(PLANILHA, 'Password', 'teste' ) ; -- falta comando para colocar a senha na planilha
END;
-- finaliza exportação para o excel
PROCEDURE PRC_FINALIZA
(
NOME_ARQUIVO VARCHAR2 DEFAULT 'Exportacao.xls'
)
IS
SALVAR VARCHAR2(2000);
BEGIN
-- ABRE CAIXA DE DIALOGO SALVAR COMO... DO WINDOWS
SALVAR := FUN_SALVAR_ARQUIVO(NOME_ARQUIVO,'Excel (*.xls)|*.xls|');
-- PERMITE AO USER VER A APLICAÇÃO DO EXCEL PARA VER O RESULTADO.
OLE2.SET_PROPERTY(APLICACAO, 'VISIBLE', TRUE ) ;
-- SALVANDO O ARQUIVO
OPCOES := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OPCOES, SALVAR);
OLE2.INVOKE(PLANILHA, 'SaveAs', OPCOES);
OLE2.DESTROY_ARGLIST(OPCOES);
-- LIBERA RECIPIENTES DA MEMÓRIA
OLE2.RELEASE_OBJ(PAGINA);
OLE2.RELEASE_OBJ(PLANILHA);
OLE2.RELEASE_OBJ(PASTA);
OLE2.RELEASE_OBJ(PASTA_TRAB);
OLE2.RELEASE_OBJ(APLICACAO);
-- CASO ACONTEÇA ALGUMA COISA ERRADA
EXCEPTION
WHEN OTHERS THEN
CLEAR_MESSAGE;
OLE2.RELEASE_OBJ(PLANILHA);
OLE2.RELEASE_OBJ(PASTA);
OLE2.RELEASE_OBJ(PASTA_TRAB);
OLE2.RELEASE_OBJ(APLICACAO);
MESSAGE('Error'||sqlerrm);
PCK_FUNCOES.PRC_MENSAGEM('ALERTA', 'Erro', 'Erro ao Exportar Arquivo...', ' OK ');
RAISE FORM_TRIGGER_FAILURE;
END;
FUNCTION FUN_SALVAR_ARQUIVO
(
NOME_ARQ_padrão VARCHAR2,
TIPO_ARQ VARCHAR2
)
RETURN VARCHAR2
IS
BEGIN
RETURN WIN_API_DIALOG.SAVE_FILE(NOME_ARQ_padrão,'Salvar arquivo como: ','Desktop', TIPO_ARQ, true);
END;
END;
-
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Ter, 02 Out 2012 7:32 am
José Fabiano Martinatti
Analista de Sistemas Cia Muller de Bebidas
josemartinatti@ciamuller.com.br
Analista de Sistemas Cia Muller de Bebidas
josemartinatti@ciamuller.com.br
Estou fazendo uma para Word quando terminar de fazer todos os processos eu coloco aqui.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes