Ejemplo de generar excel desde Forms
Publicado por
Manuel (1 intervención) el 07/09/2007 10:15:15
PROCEDURE GENERAR_EXCEL IS
BEGIN
DECLARE
-- Declaración de objetos OLE --
application OLE2.OBJ_TYPE;
workbooks OLE2.OBJ_TYPE;
workbook OLE2.OBJ_TYPE;
worksheets OLE2.OBJ_TYPE;
worksheet OLE2.OBJ_TYPE;
cell OLE2.OBJ_TYPE;
range OLE2.OBJ_TYPE;
range_col OLE2.OBJ_TYPE;
-- Declaración manual de la lista de argumentos OLE --
args OLE2.LIST_TYPE;
-- Declaración de variables --
baslik VARCHAR2(100);
row_n NUMBER;
col_n NUMBER;
filename VARCHAR2(100);
-- Cursor que rescata los datos que nos interesa --
CURSOR BUSCA_CENTROS IS (
SELECT CDCENTRO, CDCIF, NOMBRE, TELEFONO
FROM EPER_CENTROS
WHERE FCBAJA IS NULL );
--Variable que recupera el número de filas y columnas del cursor--
totalfilas number;
totalcolumnas number;
--Variable tipo tabla que almacenará los registros de cursor--
cen eper_centros%rowtype;
BEGIN
-- Arrancamos Escel --
application:=OLE2.CREATE_OBJ('Excel.Application');
OLE2.SET_PROPERTY(application, 'Visible', 'True');
-- Se devuelve el manejador de objetos a la colección de Wordbooks
workbooks:=OLE2.GET_OBJ_PROPERTY(application, 'Workbooks');
-- Añadir un nuevo objeto Workbook a la colección de Workbooks --
workbook:=OLE2.GET_OBJ_PROPERTY(workbooks,'Add');
-- Return object handle to the Worksheets collection for the Workbook
worksheets:=OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
-- Obtiene el primer Worksheet en la colección Workseets
worksheet:=OLE2.GET_OBJ_PROPERTY(worksheets,'Add');
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 1);
worksheet:=OLE2.GET_OBJ_PROPERTY(worksheets,'Item',args);
OLE2.DESTROY_ARGLIST(args);
filename := NVL(:BOPCION.PUENTE,'D:\MMA.xls');
col_n := 1;
row_n := 1;
OPEN BUSCA_CENTROS;
SELECT COUNT(CDCENTRO) INTO totalfilas FROM EPER_CENTROS WHERE FCBAJA IS NULL;
totalcolumnas:=4; --Es el número de columnas que recupera el cursor--
--INSERTAMOS ENCABEZADO--
-- Insertamos la cabecera CDCENTRO --
baslik:='CDCENTRO';
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n);
OLE2.ADD_ARG(args, col_n);
cell:=OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', baslik);
OLE2.RELEASE_OBJ(cell);
-- Insertamos la cabecera CIF --
baslik:='CIF';
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n);
OLE2.ADD_ARG(args, col_n+1);
cell:=OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', baslik);
OLE2.RELEASE_OBJ(cell);
-- Insertamos la cabecera CDCENTRO --
baslik:='NOMBRE';
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n);
OLE2.ADD_ARG(args, col_n+2);
Cell:=OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', baslik);
OLE2.RELEASE_OBJ(cell);
-- Insertamos la cabecera TELEFONO --
baslik:='TELEFONO';
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n);
OLE2.ADD_ARG(args, col_n+3);
cell:=OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', baslik);
OLE2.RELEASE_OBJ(cell);
LOOP
FETCH BUSCA_CENTROS INTO CEN.CDCENTRO, CEN.CDCIF, CEN.NOMBRE, CEN.TELEFONO;
LOOP
-- Insertamos el campo CDCENTRO --
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n+1);
OLE2.ADD_ARG(args, col_n);
cell:=OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', CEN.CDCENTRO);
OLE2.RELEASE_OBJ(cell);
--
col_n := col_n+1;
-- Insertamos el campo CDCIF --
args:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, row_n+1);
OLE2.ADD_ARG(args, col_n);
cell:=OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.SET_PROPERTY(cell, 'Value', CEN.CDCIF);
OL