Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Oracle > Pasar datos de excel a oracle
-Foros de debate

Oracle
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Pasar datos de excel a oracle
Enviado por Basty el día 3 de julio de 2006

Hola.
Necesito pasar información de excel a la base de tados de oracle pero quiero saber si se puede hacer a traves de oracle forms 6i.

saludos y gracias por su ayuda

 
Re: Pasar datos de excel a oracle
Enviado por Julio el día 3 de julio de 2006

Que tal,

Puedes utilizar el paquete OLE2 que provee una API de PL/SQL para crear, manipular, y accesar atributos de objetos OLE2.

Aca estan algunos ejemplos.

PACKAGE BODY ACCESA_EXCEL IS
xlApplication OLE2.LIST_TYPE;
xlBooks OLE2.OBJ_TYPE;
xlBook OLE2.OBJ_TYPE;
xlSheets OLE2.OBJ_TYPE;
xlSheet OLE2.OBJ_TYPE;
xlCell OLE2.OBJ_TYPE;
arg_list OLE2.LIST_TYPE;

--inicializa la aplicacion con excel
procedure inicializa_ambiente(pnombre_de_archivo in varchar2, pnombre_hoja in varchar2)
is
begin
xlapplication:= ole2.create_obj('Excel.Application');
xlBooks := ole2.get_obj_property(xlapplication, 'Workbooks');
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, pnombre_de_archivo);
xlBook := ole2.invoke_obj(xlBooks, 'Open', arg_list);
ole2.destroy_arglist(arg_list);
xlSheets := OLE2.GET_OBJ_PROPERTY(xlBook,'Worksheets');
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, pnombre_hoja);
--xlSheet := OLE2.GET_OBJ_PROPERTY( xlSheets,'Sheets',arg_list);
xlSheet := OLE2.GET_OBJ_PROPERTY( xlBook,'Worksheets',arg_list);
ole2.destroy_arglist(arg_list);
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--escribe valor
procedure escribe_valor(plinea in number, pcolumna in number, pvalor in varchar2)
is
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
OLE2.SET_PROPERTY(xlCell,'Value',pvalor);
OLE2.RELEASE_OBJ( xlCell );
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--leer numero
function lee_numero(plinea in number, pcolumna in number)
return varchar2
is
v_value varchar2(255);
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
v_value:=OLE2.GET_NUM_PROPERTY(xlCell,'Value');
OLE2.RELEASE_OBJ( xlCell );

return v_value;
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--leer texto
function lee_texto(plinea in number, pcolumna in number)
return varchar2
is
v_valor varchar2(255);
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
v_valor:=OLE2.GET_CHAR_PROPERTY(xlCell,'Value');
OLE2.RELEASE_OBJ( xlCell );

return v_valor;
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

-- Cambiar formato de celda a texto, Selection.NumberFormat = "@"
procedure cambia_formato(plinea in number, pcolumna in number)
is
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
OLE2.SET_PROPERTY(xlCell,'NumberFormat','@');
OLE2.RELEASE_OBJ( xlCell );

EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

procedure guardar_como(pnom_archivo in varchar2)
is
begin
--save document as pnom_archivo
arg_list:= ole2.create_arglist;
OLE2.ADD_ARG(arg_list, pnom_archivo);
OLE2.INVOKE(xlBook, 'SaveAs', arg_list);
OLE2.DESTROY_ARGLIST(arg_list);
OLE2.INVOKE(xlApplication, 'QUIT');
OLE2.RELEASE_OBJ( xlSheet );
OLE2.RELEASE_OBJ( xlSheets );
OLE2.RELEASE_OBJ( xlBook );
OLE2.RELEASE_OBJ( xlBooks );
ole2.release_obj(xlApplication);

EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--cierra aplicacion
procedure cierra_aplicacion
is
begin
OLE2.SET_PROPERTY( xlApplication,'Visible',-1 );
ole2.invoke(xlApplication,'QUIT');
OLE2.RELEASE_OBJ( xlSheet );
OLE2.RELEASE_OBJ( xlSheets );
OLE2.RELEASE_OBJ( xlBook );
OLE2.RELEASE_OBJ( xlBooks );
ole2.release_obj(xlApplication);
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;


END;


PACKAGE ACCESA_EXCEL IS
-- Funciones y procedimientos publicos
procedure inicializa_ambiente(pnombre_de_archivo in varchar2, pnombre_hoja in varchar2);
procedure escribe_valor(pLinea in number, pcolumna in number, pvalor in varchar2);
procedure cierra_aplicacion;
function lee_numero(plinea in number, pcolumna in number) return varchar2;
function lee_texto(plinea in number, pcolumna in number) return varchar2;
procedure cambia_formato(plinea in number, pcolumna in number);
procedure guardar_como(pnom_archivo in varchar2);
END;

Espero que te sirva de algo.

 

Re: Pasar datos de excel a oracle
Enviado por Julio el día 3 de julio de 2006

Que tal,

Puedes utilizar el paquete OLE2 que provee una API de PL/SQL para crear, manipular, y accesar atributos de objetos OLE2.

Aca estan algunos ejemplos.

PACKAGE BODY ACCESA_EXCEL IS
xlApplication OLE2.LIST_TYPE;
xlBooks OLE2.OBJ_TYPE;
xlBook OLE2.OBJ_TYPE;
xlSheets OLE2.OBJ_TYPE;
xlSheet OLE2.OBJ_TYPE;
xlCell OLE2.OBJ_TYPE;
arg_list OLE2.LIST_TYPE;

--inicializa la aplicacion con excel
procedure inicializa_ambiente(pnombre_de_archivo in varchar2, pnombre_hoja in varchar2)
is
begin
xlapplication:= ole2.create_obj('Excel.Application');
xlBooks := ole2.get_obj_property(xlapplication, 'Workbooks');
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, pnombre_de_archivo);
xlBook := ole2.invoke_obj(xlBooks, 'Open', arg_list);
ole2.destroy_arglist(arg_list);
xlSheets := OLE2.GET_OBJ_PROPERTY(xlBook,'Worksheets');
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, pnombre_hoja);
--xlSheet := OLE2.GET_OBJ_PROPERTY( xlSheets,'Sheets',arg_list);
xlSheet := OLE2.GET_OBJ_PROPERTY( xlBook,'Worksheets',arg_list);
ole2.destroy_arglist(arg_list);
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--escribe valor
procedure escribe_valor(plinea in number, pcolumna in number, pvalor in varchar2)
is
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
OLE2.SET_PROPERTY(xlCell,'Value',pvalor);
OLE2.RELEASE_OBJ( xlCell );
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--leer numero
function lee_numero(plinea in number, pcolumna in number)
return varchar2
is
v_value varchar2(255);
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
v_value:=OLE2.GET_NUM_PROPERTY(xlCell,'Value');
OLE2.RELEASE_OBJ( xlCell );

return v_value;
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--leer texto
function lee_texto(plinea in number, pcolumna in number)
return varchar2
is
v_valor varchar2(255);
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
v_valor:=OLE2.GET_CHAR_PROPERTY(xlCell,'Value');
OLE2.RELEASE_OBJ( xlCell );

return v_valor;
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

-- Cambiar formato de celda a texto, Selection.NumberFormat = "@"
procedure cambia_formato(plinea in number, pcolumna in number)
is
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
OLE2.SET_PROPERTY(xlCell,'NumberFormat','@');
OLE2.RELEASE_OBJ( xlCell );

EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

procedure guardar_como(pnom_archivo in varchar2)
is
begin
--save document as pnom_archivo
arg_list:= ole2.create_arglist;
OLE2.ADD_ARG(arg_list, pnom_archivo);
OLE2.INVOKE(xlBook, 'SaveAs', arg_list);
OLE2.DESTROY_ARGLIST(arg_list);
OLE2.INVOKE(xlApplication, 'QUIT');
OLE2.RELEASE_OBJ( xlSheet );
OLE2.RELEASE_OBJ( xlSheets );
OLE2.RELEASE_OBJ( xlBook );
OLE2.RELEASE_OBJ( xlBooks );
ole2.release_obj(xlApplication);

EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--cierra aplicacion
procedure cierra_aplicacion
is
begin
OLE2.SET_PROPERTY( xlApplication,'Visible',-1 );
ole2.invoke(xlApplication,'QUIT');
OLE2.RELEASE_OBJ( xlSheet );
OLE2.RELEASE_OBJ( xlSheets );
OLE2.RELEASE_OBJ( xlBook );
OLE2.RELEASE_OBJ( xlBooks );
ole2.release_obj(xlApplication);
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;


END;


PACKAGE ACCESA_EXCEL IS
-- Funciones y procedimientos publicos
procedure inicializa_ambiente(pnombre_de_archivo in varchar2, pnombre_hoja in varchar2);
procedure escribe_valor(pLinea in number, pcolumna in number, pvalor in varchar2);
procedure cierra_aplicacion;
function lee_numero(plinea in number, pcolumna in number) return varchar2;
function lee_texto(plinea in number, pcolumna in number) return varchar2;
procedure cambia_formato(plinea in number, pcolumna in number);
procedure guardar_como(pnom_archivo in varchar2);
END;

Espero que te sirva de algo.

 

Re: Pasar datos de excel a oracle
Enviado por Julio el día 3 de julio de 2006

Que tal,

Puedes utilizar el paquete OLE2 que provee una API de PL/SQL para crear, manipular, y accesar atributos de objetos OLE2.

Aca estan algunos ejemplos.
debes crear una especificacion del paquete con esto

PACKAGE ACCESA_EXCEL IS
-- Funciones y procedimientos publicos
procedure inicializa_ambiente(pnombre_de_archivo in varchar2, pnombre_hoja in varchar2);
procedure escribe_valor(pLinea in number, pcolumna in number, pvalor in varchar2);
procedure cierra_aplicacion;
function lee_numero(plinea in number, pcolumna in number) return varchar2;
function lee_texto(plinea in number, pcolumna in number) return varchar2;
procedure cambia_formato(plinea in number, pcolumna in number);
procedure guardar_como(pnom_archivo in varchar2);
END;

y luego el cuerpo

PACKAGE BODY ACCESA_EXCEL IS
xlApplication OLE2.LIST_TYPE;
xlBooks OLE2.OBJ_TYPE;
xlBook OLE2.OBJ_TYPE;
xlSheets OLE2.OBJ_TYPE;
xlSheet OLE2.OBJ_TYPE;
xlCell OLE2.OBJ_TYPE;
arg_list OLE2.LIST_TYPE;

--inicializa la aplicacion con excel
procedure inicializa_ambiente(pnombre_de_archivo in varchar2, pnombre_hoja in varchar2)
is
begin
xlapplication:= ole2.create_obj('Excel.Application');
xlBooks := ole2.get_obj_property(xlapplication, 'Workbooks');
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, pnombre_de_archivo);
xlBook := ole2.invoke_obj(xlBooks, 'Open', arg_list);
ole2.destroy_arglist(arg_list);
xlSheets := OLE2.GET_OBJ_PROPERTY(xlBook,'Worksheets');
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, pnombre_hoja);
--xlSheet := OLE2.GET_OBJ_PROPERTY( xlSheets,'Sheets',arg_list);
xlSheet := OLE2.GET_OBJ_PROPERTY( xlBook,'Worksheets',arg_list);
ole2.destroy_arglist(arg_list);
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--escribe valor
procedure escribe_valor(plinea in number, pcolumna in number, pvalor in varchar2)
is
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
OLE2.SET_PROPERTY(xlCell,'Value',pvalor);
OLE2.RELEASE_OBJ( xlCell );
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

--leer numero
function lee_numero(plinea in number, pcolumna in number)
return varchar2
is
v_value varchar2(255);
begin
arg_list:= ole2.create_arglist;
ole2.add_arg(arg_list, plinea);
ole2.add_arg(arg_list, pcolumna);
xlCell:= ole2.get_obj_property(xlSheet, 'Cells', arg_list);
ole2.destroy_arglist(arg_list);
v_value:=OLE2.GET_NUM_PROPERTY(xlCell,'Value');
OLE2.RELEASE_OBJ( xlCell );

return v_value;
EXCEPTION
WHEN OTHERS THEN
MESSAGE(sqlerrm);

end;

 
Re: Re: Pasar datos de excel a oracle
Enviado por jpironag el día 24 de octubre de 2007

Quisiera saber que se debe colocar para enviar los datos en formato de numero y de ser posible que contenga separador de miles y decimales (.,)

 

Re: Re: Pasar datos de excel a oracle
Enviado por Julio el día 3 de julio de 2006

Lo siento, lo envie varias veces poque me daba un error de mysql, pero ya veo que de todos modos si los publico, bueno, toma en cuenta solo el primer mensaje. Nos vemos.

 
Re: Re: Re: Pasar datos de excel a oracle
Enviado por Francisco Gracia el día 13 de abril de 2008

Buneas le comento que tengo un formato de fecha (12/04/2008 17:10:10), pero utilizando el procedimiento solo me carga la infomracion de 12/04/2008 y no carga las horas como puedo hacer para cargas las horas , Gracias de antemano

 
Re: Re: Re: Re: Pasar datos de excel a oracle
Enviado por Jose Luis el día 13 de agosto de 2008

Muy util. gracias.

 
Ejecutar procedures VBA
Enviado por Jose Luis el día 19 de agosto de 2008

Aprovechando tu expertise, me podrías dar una idea de como lanzar procedimientos SUB inmersos en excel.

Gracias.

 
Re: Ejecutar procedures VBA
Enviado por bsdsilva el día 5 de noviembre de 2008

Hola..

Como configuro el oracle para que me reconozca el API del OLE2??? cuando compilo el pl me dice que Compilation errors for PACKAGE CHICKEN.EXCEL

Error: PLS-00201: identifier 'OLE2.OBJ_TYPE' must be declared

 
Re: Re: Ejecutar procedures VBA
Enviado por Marifé Lación Larga el día 6 de noviembre de 2008

ERES UN GARRULO, PALETO Y ANALFABETO.
ESE PAQUETE ES PARA UTILIZARLO DESDE UNA PANTALLA DE DEVELOPER, NO DESDE EL NUECLEO DE LA BBDD.

AÚN ASÍ TE DEJARÉ QUE ME METAS DOS DEDOS EN MI COÑO.

 








Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network