EXCEL WITH FORMS

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Post Reply
bertosro
Rank: Analista Júnior
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

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
Trevisolli
Moderador
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.
sydfilho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Posts: 7
Joined: Mon, 14 Mar 2005 3:36 pm
Location: porto alegre

Personal, where is the file available that deal with Forms?

Abç
User avatar
dr_gori
Moderador
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

Here is the file:
[url=http://en.glufke.net/oracle/download/GE ... _EXCEL.fmb]DOWNLOAD
Thanks Trevisolli for sending the file !!!


: -O
Trevisolli
Moderador
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

Valeu Dr Gori ...

to make available to the guys.
Having more, I send it to you.
User avatar
tiagodutra
Rank: Estagiário Pleno
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 ...
jfmartinatti
Rank: Estagiário Pleno
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

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.
User avatar
tiagodutra
Rank: Estagiário Pleno
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:
jfmartinatti
Rank: Estagiário Pleno
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

Follows below:

Package spec [/ b

Select all

 
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 ]

Select all

 
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; 
jfmartinatti
Rank: Estagiário Pleno
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

I'm doing one for Word when I finish doing all the processes I put here.
Post Reply
  • Information
  • Who is online

    Users browsing this forum: No registered users and 15 guests