Oracle -> Exceldatei aus PL/SQL schreiben -> Tutorial 4a
 

Tutorials

Tutorial

Ãœberschriften und Autofilter

English version

In 'Erste Schritte' haben wir gesehen, dass in vielen Fällen standardmäßig Überschriften definiert werden und dafür auch gleich ein Autofilter eingestellt wird. Um Überschriften selbst zu definieren gibt es verschiedene Möglichkeiten

Ãœberschriften

Ein- oder zweizeilig

Ein- oder zweizeilige Überschriften mit Standardlayout (Farben und Schrift) lassen sich kompakt über ein Array definieren.

    TYPE t_rec_caption  IS RECORD(
         title              VARCHAR2(100)
        ,topTitle           VARCHAR2(100)
        ,span               PLS_INTEGER
        ,comment            VARCHAR2(1000)
        ,repeatTitle        BOOLEAN
        );
    TYPE t_tab_caption IS TABLE OF t_rec_caption
        INDEX BY BINARY_INTEGER;

Für jede Spalte lässt sich hier die Überschrift angeben (title) und einen Kommentar (comment).

Optional kann man darüber eine weitere Überschriftszeile angeben (topTitle). Diese "Überüberschriften" können mehrere Spalten überspannen (span). Hinweis: hat mindestens eine Spalte ein topTitle definiert, dann müssen alle anderen, soweit sie nicht durch span abgedeckt sind, ein Leerzeichen als topTitle erhalten.

repeatTitle im ersten t_tab_caption Element steuert ob die Ãœberschrift beim Druck auf jeder Seite wiederholt werden soll. Dieses Attribut nicht setzen, wenn beim Drucklayout der Druckbereich und/oder die Druckwiederholung der Ãœberschriften gesetzt werden, da diese Angaben sonst ignoriert werden

Alles selbstdefiniert

Siehe Komplexes Beispiel

Autofilter

Hat man Überschriften, wie oben beschriebenen, mit t_tab_caption definiert, dann kann man in der Prozedur closeWorksheet einfach p_autofilter auf TRUE setzen und es wird für jede Überschriftsspalte automatisch das Filterattribut gesetzt

Man kann aber auch genauer definieren wo welche Spalte gefiltert werden soll:

    TYPE t_rec_autofilter IS RECORD (
         row         PLS_INTEGER
        ,colFrom     PLS_INTEGER
        ,colTo       PLS_INTEGER
       );

Das ist weitgehend selbsterklärend: der Filter wird in Zeile row von Spalte colFrom bis Spalte colTo gesetzt. Diese Einstellung ist nur wirksam, wenn in closeWorksheet nicht gleichzeitig p_autofilter auf TRUE (Default!) gesetzt ist.