Pasar datos de excel a oracle
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
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
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.
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.
Por favor me pueden ayudar en que parte o con que código puedo definir la lectura del libro de excel y la hoja si se va a leer desde CD O DVD
Muchas gracias a quien pueda ayudarme
Muchas gracias a quien pueda ayudarme
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.
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.
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;
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;
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 (.,)
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.