Hello Masters!
I would like to know if someone knows some way to interact Fers 6i with Excel or from within a forms application I want to generate and open a file in the formatted Excel.
ecxel.pll Someone knows how it works /? Is your purpose and for what I am looking for?
Thank you
EXCEL WITH FORMS
-
- Rank: Analista Júnior
- Posts: 88
- Joined: Fri, 18 Aug 2006 11:13 am
- Location: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com
MSN / TALK - roberto.fernandes@gmail.com
-
- Moderador
- Posts: 2016
- Joined: Wed, 12 Jan 2005 3:25 pm
- Location: Araraquara - SP
Brother,
Yes, how do you generate a spreadsheet in Excel.
I sent a fmb pro dr_gori and I think he will be putting on the site for download.
Hugs,
Trevisolli.
Yes, how do you generate a spreadsheet in Excel.
I sent a fmb pro dr_gori and I think he will be putting on the site for download.
Hugs,
Trevisolli.
- dr_gori
- Moderador
- Posts: 5024
- Joined: Mon, 03 May 2004 3:08 pm
- Location: Portland, OR USA
- Contact:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Here is the file:
[url=http://en.glufke.net/oracle/download/GE ... _EXCEL.fmb]DOWNLOAD
Thanks Trevisolli for sending the file !!!
: -O
[url=http://en.glufke.net/oracle/download/GE ... _EXCEL.fmb]DOWNLOAD
Thanks Trevisolli for sending the file !!!
: -O
-
- Moderador
- Posts: 2016
- Joined: Wed, 12 Jan 2005 3:25 pm
- Location: 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 ...
to make available to the guys.
Having more, I send it to you.
to make available to the guys.
Having more, I send it to you.
- tiagodutra
- Rank: Estagiário Pleno
- Posts: 7
- Joined: Wed, 19 Jan 2011 2:50 pm
- Location: Novo Hamburgo - RS
Tiago
Good Morning!!!
Personal
Google but I could not understand what this error means.
Someone there know how to help me I'm using Banco 11g and Forms 10 I saw in the post that was developed pro 6i can be the reason?
Thanks for help and I'm waiting for a light ...
Personal
Google but I could not understand what this error means.
Someone there know how to help me I'm using Banco 11g and Forms 10 I saw in the post that was developed pro 6i can be the reason?
Thanks for help and I'm waiting for a light ...
-
- Rank: Estagiário Pleno
- Posts: 7
- Joined: Tue, 02 Oct 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
Good morning,
I made a pck with various functions for exporting information for Excel, I'm going to do some hits and put the code here for you to use.
I made a pck with various functions for exporting information for Excel, I'm going to do some hits and put the code here for you to use.
- tiagodutra
- Rank: Estagiário Pleno
- Posts: 7
- Joined: Wed, 19 Jan 2011 2:50 pm
- Location: Novo Hamburgo - RS
Tiago
Oops PCKs are always welcome * - * Thanks for force Ai: Wink:
-
- Rank: Estagiário Pleno
- Posts: 7
- Joined: Tue, 02 Oct 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
Follows below:
Package spec [/ b
Body Package: [/ B ]
Package spec [/ b
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;
Body Package: [/ B ]
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
- Posts: 7
- Joined: Tue, 02 Oct 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
I'm doing one for Word when I finish doing all the processes I put here.
-
- Information
-
Who is online
Users browsing this forum: No registered users and 15 guests