Unlängst hatte ich folgenden Blog entdeckt: http://sanjeev-oracle-world.blogspot.com/ und die darin vorgestellte serverseitige Lösung getestet. Nach kleineren Tests (Umlaute) habe ich dann eine Clientversion für Oracle Forms 6i angepasst: http://www.free-dev.com/create_xls4emp.htm
Das Demo läuft auf Scott und erstellt EXCEL 2002+ XLS-Files als XML.
Die Sreenshots und der Sourcecode sind nachfolgend zu finden:
DECLARE
l_res VARCHAR2(250);
BEGIN
--
-- Ablauf zur EXCEL-Erstellung
--
-- Erstellen des Files
l_res:=pkg_genexlxml.create_excel('C:\TEMP', 'emp.xls') ;
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
-- Erstellen des Worksheets
pkg_genexlxml.create_worksheet( 'sheet1');
..
-- Erstellen der Styles
l_res:=pkg_genexlxml.create_style( 'sgs1' , 'Courier', 'red', 16, TRUE , p_backcolor => 'LightGray', P_underline => 'Single' );
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
-- Definieren der Zeilenhöhe, falls speziell
pkg_genexlxml.set_row_height ( 1, 20 ,'sheet1' );
..
-- Definieren der Spaltenbreiten
pkg_genexlxml.set_column_width( 1, 50, 'sheet1' );
..
-- Schreiben der Header-Spalten
l_res:=pkg_genexlxml.write_cell_char( l_r,1, 'sheet1', 'EMPNO' ,'sgs1' );
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
-- Schreiben der Daten in die einzelnen Spalten
l_res:=pkg_genexlxml.write_cell_num ( l_r, 1, 'sheet1' , :EMP.EMPNO, 'sgs3' );
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
EXCEPTION WHEN OTHERS THEN
NULL;
END;
.
Besten Dank an Sanjeev Sapre.
Friedhold