Modul XLS
Inhaltsverzeichnis
XLS
Im Modul XLS werden die Routinen zusammengefasst, die zur Erstellung von Dateien im Excel- oder OpenOffice Calc-Format verwendet werden. Es können auch Dateien geöffnet und ausgelesen werden.
#xls_start
Startet den Export einer Excel-Datei.
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y, Funktionen werden ersetzt
Beispiel
#frm c="c_sd_xls" y=console #xls_start #xls_sheet c="BAF Demo" #xls_row #xls_cell z=Text #xls_cell z=Text w=200 fc=red #xls_row #xls_cell z=Datum #xls_cell y=datemin z=$NOW() #xls_row #xls_cell z=Zahl #xls_cell y=curr z=3,14 #xls_stop #cout c="c_sd_xls executed"
#xls_load
Lädt eine Datei
Parameter
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y, Funktionen werden ersetzt
- fn ("FileName") - Dateiname; wenn leer, wird ein Datei-Dialog geöffnet; Default leer, Funktionen werden ersetzt
Beispiel
#xls_load fn=c:\temp\$VAR(filename)
#xls_stop
Beendet den Export und speichert die Datei
Parameter
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y, Funktionen werden ersetzt
- fn ("FileName") - Dateiname, unter dem die Datei gespeichert wird; Funktionen werden ersetzt. Aus der Endung ergibt sich dann der Typ der Datei. Wenn der Parameter leer bleibt, öffnet sich ein Dateiauswahldialog zum Speichern.
- o ("open") - Wenn Y, word wird nach der Erstellung gleich geöffnet; default Y, Funktionen werden ersetzt.
Beispiel
(siehe #xls_start)
#xls_sheet
Fügt der Datei ein (weiteres) Sheet hinzu oder selektiert ein Sheet. Alle weiteren #xls_row-Prozeduren fügen dann diesem Sheet Reihen hinzu.
Parameter
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y, Funktionen werden ersetzt
- c ("caption") - Beschriftung des Tabs
- fc ("fixed cols") - Anzahl der Spalten, die links fixiert werden; default 0; Funktionen werden ersetzt
- fr ("fixed rows") - Anzahl der Zeilen, die oben fixiert werden; default 0; Funktionen werden ersetzt
- n ("number") - 0-relativer Index des Sheets, das selektiert werden soll
Beispiele
#xls_sheet c="Daten" fr=1 #xls_sheet n=0
#xls_row
Fügt dem aktuellen Sheet eine weitere Reihe hinzu oder selektiert eine solche.
Parameter
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y, Funktionen werden ersetzt
- h (height) - Höhe der Zelle; default 20, Funktionen werden ersetzt
- n ("number") - 0-relativer Index der Reihe, die selektiert werden soll
Beispiel
(siehe #xls_start)
#xls_cell
Fügt der aktuellen Reihe eine weitere Zelle hinzu oder schreibt den Wert der mit n spezifizierten.
Parameter
- a ("align") - Ausrichtung des Textes / des Wertes in der Zelle
- c ("center") - mittig
- d2 / d4 (decimal) - ausgerichtet am Komma für zwei oder vier Nachkommastellen
- l ("left") - linksbündig
- r ("right") - rechtsbündig
- bt, bl, br, bb ("border top", "border left", "border right", "border bottom") - Ränder der Zelle, default thin, Funktionen werden ersetzt (auto, none, thin, medium, dashed, dotted, thick, double, hair, mediumdashed, dashdotted, mediumdashdotted, dashdotdotted, mediumdashdotdotted, slanteddashdotted)
- cl ("color") - Farbe der Zelle; default weiß
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y, Funktionen werden ersetzt
- cs ("ColSpan") - Anzahl der Spalten, die zusammengefasst werden; default 1, Funktionen werden ersetzt
- fc ("FontColor") - Farbe der Schrift; default schwarz
n ("number") - 0-relativer Index der Spalte, die geschrieben werden soll; wenn leer, wird eine neue Zelle hinzugefügt; default leer, Funktionen werden ersetzt
- va ("vertivcal align") - vertikale Ausrichtung des Textes; default t, Funktionen werden ersetzt
- b ("bottom") - unten
- c ("center") - mittig
- t ("top") - oben
- fs ("FontStyle") - Style der Schrift, die einzelnen Optionen können kombiniert werden; default keine Option
- b - bold
- i - italic
- u - underline
- s - strikeout
- w ("width") - Breite der Zelle
- y - Typ der Zelle, default Text
- curr - Zahlen mit zwei Nachkommastellen
- curr4 - Zahlen mit vier Nachkommastellen
- date - Datum
- datemin - Datum und Uhrzeit ohne Sekunden
- datesek - Datum und Uhrzeit mit Sekunden
- int - Zahlen ohne Nachkommastellen
- text - Text
- z - Wert/Text, der in der Zelle eingefügt werden soll; Funktionen werden ersetzt
Beispiel
#xls_cell z=Text w=200 fc=red #xls_cell y=datemin z=$NOW()
#xls_looprows
Parameter
- cnd - ("condition") Die Prozedur wird nur dann ausgeführt, wenn das Statement in cnd Y ergibt. Default ist Y; Funktionen werden ersetzt
- db - ("database") Name der Datenbank, auf die sich die Transaktion bezieht; Funktionen werden ersetzt
- er - ("each row") Das Kommando, das für jede Zeile der Datenmenge aufgerufen wird. Funktionen werden ersetzt.
- ern - ("each row no") Das Kommando, das für jede Zeile der Datenmenge aufgerufen wird. Funktionen werden nicht ersetzt. Wenn ern einen Wert hat, bleibt er unberücksichtigt. Üblicherweise wird er verwendet.
- ert - ("each row transaction") Wenn Y, wird für jede Zeile der Datenmenge eine eigene Transaktion gestartet und nach der Abarbeitung des Kommandos wieder geschlossen; Funktionen werden ersetzt
- m - ("maximum") Es wird maximal für die Anzahl der angegebenen Zeilen das in er angegebene Kommando ausgeführt. Dieser Parameter wird häufig dazu verwendet, während der Entwicklung mit einer geringen Zahl von Datensätzen zu arbeiten; Funktionen werden ersetzt
- nex ("no exception") - Wenn Y, wird bei Exceptions in er nicht abgebrochen, sondern mit dem nächsten Datensatz fortgesetzt. Default N; Funktionen werden ersetzt.
- n - Name der Variablen, in welche die aktuelle, 0-relative Schleifennummer geschrieben wird
Beispiel
#xls_looprows er=sof_7836_line m_=5
#xls_page
Exportiert alle VL-, Grid- und XGrid-Segmente der aktuellen Seite. Für jedes Segment wird eine neues Sheet angelegt.
Parameter
(keine)
Beispiel
#btn y=xls s=#xls_page se=b
$XLS_COUNT()
Ermittelt die Anzahl der Sheets, Zeilen oder Zellen
Parameter
- Von was wird die Anzahl ermittelt
- sheets - Sheets in einer Datei
- rows - Zeilen in einem Sheet
- cells - Zellen in einer Zeile
Beispiel
#cout c="Dieses Sheet hat $XLS_COUNT(rows) Zeilen"
$XLS_CELL()
Gibt den Wert einer Zelle aus
Parameter
- Index der Zelle
Beispiel
#val_set n=1 z=$XLS_CELL(0) ~ $INTLEN($VAL(1)) = 9 #var_add n=zeile z=1 y=int #cout c="$VAL(1) - $VAR(datei) / $VAR(zeile)" m=20 md=10 #sql_upsert y=a t=neuland.sof_7836 k=adrnr f_adrnr=$VAL(1) hst=N ~~
Beispiel: XLSX-Datei mit Daten anreichern
Kommando c_fp_lieferanten
Öffnet die Datei c:\temp\lieferanten.xlsx und geht durch alle vorhandenen Zeilen mit Ausnahme der Titelzeile (darum lf=1). Danach öffnet sich ein Datei-Dialog, um die Datei abzuspeichern.
#frm c="c_fp_lieferanten" y=console #xls_load fn=c:\temp\lieferanten.xlsx #xls_sheet n=0 #loop lf=1 lt=$ICALC(-,$XLS_COUNT(rows),1) er=c_fp_lieferanten_line n=loopvar #xls_stop #cout c="c_fp_lieferanten executed"
Sub-Kommando c_fp_lieferanten_line
Zunächst wird die korrekte Zeile gesetzt, die ist 0-relativ anzugeben. Die Lieferantennummer ist in der zweiten Spalte, das wird mit $XLS_CELL(1) ausgelesen und auch gleich ausgegeben.
Die letzte Zeile im Ausgangs-Sheet ist eine Summenzeile und hat keine Lieferantennummer, darum wird darauf geprüft. Mit einer einfachen SQL-Abfrage werden Steuernummer, Umsatzsteuer-ID und IBAN abgefragt und in Values zwischengespeichert. Diese werden dann in die dafür vorgesehenen Zellen geschrieben.
#xls_row n=$VAR(loopvar) #cout c=$XLS_CELL(1) ~ $NEMPTY($XLS_CELL(1)) #sql select iban, coast_steuernr, coast_ustid from cache_lieferant #sql where lieferant_number = $XLS_CELL(1) #sql_openval f_iban=1 f_coast_steuernr=2 f_coast_ustid=3 #xls_cell n=4 z=$VAL(3) #xls_cell n=5 z=$VAL(2) #xls_cell n=11 z=$VAL(1) ~~