Tabellen-Output in Excel

<< Click to Display Table of Contents >>

Navigation:  Anhang > Historisches >

Tabellen-Output in Excel

GESStabs liefert mit dem OfficeExport eine moderne Möglichkeit des Excel-Outputs von Tabellen und Grafiken mit zahlreichen, flexiblen Optionen zur Gestaltung der Tabellen und des Tabellenbandes.

Die historischen Vorgänger dazu sind InstantExcel und ExcelOut (as/ via HTML).


InstantExcel

Syntax:

INSTANTEXCEL = [ YES | NO ];

Während des Tabellierungs-Laufs wird eine Instanz von Excel geöffnet, und alle Zelleninhalte werden übertragen.

ExcelFileName

Der erzeugte Output wird unter dem (optional) mittels EXCELFILENAME definierten Dateinamen gespeichert.

Syntax:

EXCELFILENAME = <dateiname>;

ChapterTitle

Die Verteilung von Tabellen auf einzelne Excel-Sheets kann man mit CHAPTERTITLE steuern: Je CHAPTERTITLE wird ein neues Excel-Sheet angelegt, das alle nachfolgenden Tabellen enthält (bis zur nächsten ChapterTitle-Anweisung).

Syntax:

CHAPTERTITLE = <name>;

Da diese Strings an Excel durchgereicht werden, müssen sie ein paar Bedingungen erfüllen: sie dürfen nicht zu lang werden, und sie dürfen nicht bereits vorher verwendet worden sein.

Spezifische TableFormats

Zur Steuerung des Erscheinungbilds von Tabellen, die via INSTANTEXCEL ausgegeben werden, gibt es die folgenden TABLEFORMATs:

CONNECTEXCELCELLS

Bewirkt, dass horizontal zusammenliegende Zellen im Excel-Output »verbunden« werden, wenn sie derselben Box-Klasse angehören und dies ohne Datenverlust möglich ist. So würden z.b. alle Zellen im TABLETITLE zu einer zusammenhängenden Zellen-Zeile zusammengefasst. Dies bewirkt vor allem eine ausgewogenere Darstellung, wenn man mit Hintergrundfarben arbeitet. Bei HCENTER ist dann für Excel die Gesamtmenge der verbundenen Zellen der Bezugsrahmen. Mögliche Kandidaten hierfür sind TABLETITLE, TOPTEXT, BOTTOMTEXT und c in der x-Achse.

EXCELNOWRAPTEXT

Bewirkt, dass Texte in die Textboxes (TOPTEXT, BOTTOMTEXT) in derselben Formatierung (Zeilenumbrüche) übertragen wird, wie der Text im Script steht.

EXCELNOFONT

Es werden nur die nackten Texte bzw. Werte an Excel übertragen und auch keine Fontinformationen. Bei langen Tabellenbänden trägt dies zur Performance bei. dies gilt auch bei OPENOFFICEDEVIATION.

EXCELDOCUMENT

Wenn dies TABLEFORMAT gesetzt ist, wird die DOCUMENT-Kennzeichnung des Tabellenbandes in Excel übertragen.

EXCELNUMBERFORMAT

Wenn dies TABLEFORMAT gesetzt ist, werden Zahlen mit Nachkommastellen explizit auf die Zahl der Nachkommastellen formatiert, und damit die Automatik von Excel umgangen, Nullen als Nachkommastellen zu tilgen.

EXCELFRAMES

Rahmen um die Excel-Tabelle

EXCELCOLOR

Übernahme von COLOR FOREGROUND bzw. BACKGROUND

EXCELALIGN[H/V]

Übernahme horizontales/ vertikales Alignment der Zellen

EXCELPAGEBREAK

generiert einen Seitenwechsel am Ende der Tabelle

EXCELHEADER

Übernahme eines HEADER nach Excel

EXCELFOOTER

Übernahme eines FOOTER nach Excel

EXCELONELINELABEL

Die Labels der Vorspalte werden dann als eine jeweils als mehrzeilige Zellen an Excel übergeben. Das sieht ggf. hübscher aus. Das hat allerdings auch zur Folge, dass auch die Datenzellen mehrere CELLELEMENTS in einer Zelle enthalten (das muss ja irgendwie zusammenpassen). Wenn man mehrere CELLELEMENTS in einer Zelle hat, kann man dann in Excel nicht mehr rechnen oder Grafiken erzeugen.

EXCELNODISTANCE

Reduktion des vertikalen Abstands zwischen Tabellen in Excel.

ExcelHideUpdate

Syntax:

EXCELHIDEUPDATE = [ YES | NO ];

Wird diese Option auf YES gesetzt, dann wird die Oberfläche von Excel bei INSTANTEXCEL=YES nur immer dann gezeigt, wenn eine Tabelle fertig ist. Das kann die Bearbeitungszeit der Übergabe an Excel vermindern.

ExcelRangeDelim

Syntax:

EXCELRANGEDELIM = <char>;

Die Übergabe an Acel über die OLE-Schnittstelle ist als die Übergabe von Strings realisiert. Um die Datenquellen von Grafiken zu definieren, muss u.U. eine komplexe Menge von »Ranges« übergeben werden. Leider sind sich die Excel-Porgramme nicht einig, durch welches Trennzeichen diese einzelnen Bereichsangaben zu trennen sind. Im »Normalfall« ist das das Semikolon, und so verfährt GESStabs in der Schnittstelle auch normalerweise. Einige Excel-Versionen wollen hier aber das Komma sehen. Dann kann man dies Trennzeichen hier vereinbaren, also z.B.:

EXCELRANGEDELIM = ',';

OpenOfficeDeviation

Syntax:

OPENOFFICEDEVIATION = YES;

Man kann eine Umleitung der InstantExcel-Ausgabe in ein OpenOffice-Spreadsheet bewirken. Der Funktionsumfang in der Gestaltung ist gegenüber Excel eingeschränkt; aber wenn man kein Excel greifbar hat, kann man so Tabellen in Spreadsheets übertragen. Grafiken werden nicht erzeugt.


ExcelOut (as/ via HTML)

Syntax, alte Version:

EXCELOUT = <filename>;

Mit EXCELOUT weist man das Programmsystem an, ein spezielles GESS-spezifisches Ausgabeformat zu erzeugen, das von einem in Visual Basic geschriebenen Importfilter in Microsoft Excel interpretiert wird. Dieser Importfilter legt für jede Tabelle vom Typ TABLE eine Seite in Excel an, und auf Wunsch hinter jeder Tabellenseite eine Graphikseite mit einer Excel-Graphik zur Tabelle. Die Graphiken können in Art und Aussehen durch die Schlüsselworte TEMPLATE und GRAPHTYPE (siehe InstantExcel) beeinflusst werden. EXCELOUT betrifft nur Tabellen vom Typ TABLE (nicht z.B. CODEBOOK, PROFILE etc).

Syntax, neuere Version:

EXCELOUT AS HTML = <filename>;
EXCELOUT VIA HTML = <filename>;

Excel ist ja durchaus in der Lage, HTML-Files zu interpretieren. Insbesondere wird das HTML-TABLE-Statement erkannt, und von Excel in Zellen des aktuellen Worksheets übersetzt. Dabei wird die Formatierung mit CSS-Statements zumindest in Teilen berücksichtigt. Da dies ein sehr flexibler und auch schneller Import in Excel ist, ist eine für diesen Zweck angepasste HTML-Ausgabe in GESStabs integriert.

Die Aufteilung in verschiedene Sheets durch ChapterTitle wird (analog zu InstantExcel) auch hier interpretiert. GESStabs legt hierfür ein Verzeichnis im aktuellen Arbeitsverzeichnis an, das dem <filename> ohne Extension entspricht. Für jedes Sheet wird in diesem Verzeichnis eine eigene HTML-Datei (mit den fixen Namen »sheet001« bis »sheetxxx«) generiert.

Unter <filename> (ggf. erweitert um die Extension ».html«) wird im Arbeitsverzeichnis eine HTML-Datei generiert, die die einzelnen Sheets als Links enthält. Excel (ab 2007) baut dann seinerseits je HTML-Link ein Sheet auf. Um schließlich die xls-Datei zu erzeugen, muss man (bei AS HTML) Excel starten und die HTML-Datei <filename> öffnen. Im Filemenu ist ein Einlesefilter für HTML enthalten. Das Resultat kann man dann als xlsx- bzw. xls- Datei speichern.

Bei der Version VIA HTML wird unter Windows Excel über OLE gestartet, die HTML-Datei eingelesen und anschließend als xlsx-Datei (filetype=xlOpenXMLWorkbook) gespeichert.

Spezifische TableFormate: EXCEL2[X/Y]LABELS und EXCEL2[X/Y]TITLES

Im Normalfall werden lange Texte in den Labels und Titles (sowohl x- als auch y-Richtung) als mehrere Zeilen ausgeliefert und entsprechend beim Einlesen in Excel auf mehrere Zellen verteilt. Mit Excel2XLabels/ Excel2XTitles kann man für die Labels bzw. Titles im Kopf einstellen, dass die Texte in die Zelle der HTML-Tabelle zusammenhängend übertragen werden. Entsprechendes gilt für Excel2YLabels/ Excel2YTitles für die Zellen der Vorspalte. Excel legt die Textbetandteile  dann in eine spreadsheet-Zelle ab.

HTML2ExcelDecChar

Syntax:

HTML2EXCELDECCHAR = <char>;
<char> = '.' | ','

Steuerung des Dezimaltrennzeichens im Zuge des Tabellenoutputs mittels ExcelOut via/ as HTML.

Default: HTML2EXCELDECCHAR = ',';

HTML2ExcelFlowtext

Syntax:

HTML2EXCELFLOWTEXT <boxtype> = [ YES | NO ];

Analog zu HTMLFlowtext kann man bei ExcelOut As/ via HTML mittels HTML2ExcelFlowtext verlangen, dass die Labeltexte als Fließtext (ohne Umbrüche) in HTML übertragen werden. Harte Umbrüche (\ bzw. |) werden in <br> übersetzt. Umbruchvorschläge (i.d.r. ~) werden vor der Übergabe gelöscht, da Excel keine 'soft hyphen' kennt und damit auch beim Import von HTML nicht sinnvoll umgehen kann, bei dem Excel sie in feste Bindestriche übersetzt. Weitere Formatierung kann/muss dann mit CSS erfolgen.

Folgende Boxtypes sind zulässig:

TOPTEXT

BOTTOMTEXT

TABLETITLE

LABELS X

LABELS Y

VARTITLE Y

Tabellengestaltung

Syntax:

EXCELSTYLEFILE = <filename>;

Ist ein STYLEFILE für die HTML-Ausgabe im Script definiert, so wird dieses auch in die Excel-Ausgabe integeriert. Mittels EXCELSTYLEFILE kann ein zusätzliches Stylefile, das speziell für den Excel-Output gilt und bei Vorhandensein Vorrang hat, angegeben werden.


CSVExport

Syntax:

CSVEXPORT = [ <filename> | "" ];

Implementierung der guten alten Ausgabe von Tabellen im CSV-Format (HG=...). Alle Textbestandteile der PS-Tabelle werden übertragen.