CSV Export mit womodo

8. Juni 2017

Eine häufig zu lösende Aufgabe ist ein CSV-Export bestimmter Daten aus dem CMS. Trotzdem CSV auf den ersten Blick ein recht einfaches Datenformat ist, muß dabei auf viele Details geachtet werden.

Womodo besitzt für diese Aufgabe ein sehr elegantes Werkzeug: Den AFW.Util.csvWriter. Dieser erlaubt es, nahezu "deklarativ" zu beschreiben, welche Daten in welche CSV-Spalten geschrieben werden sollen.

<tml:script>

AFW.Util.csvWriter({
divider: ";", // optional, default ist ";"
columns: [
"name",
"strasse",
"plz",
"ort"
],
query: "content.contentclass='address'"
}).write()

</tml:script>

Das obige Beispiel sucht alle Dokumente mit "contentclass=address" und erzeugt und sendet CSV-Daten an den Browser. Die Spalten bestehen dabei aus den Items "name", "strasse", "plz" und "ort".

Soll eine Spalte nicht aus einem Item bestehen sondern berechnet werden, kann dies ebenfalls sehr einfach zum Ausdruck gebracht werden:

columns: [
{
label: "Voller Name",
value: function(doc) doc.vorname + " " + doc.nachname
},
"strasse",
...
]

Statt dem Namen eines Items als String kann also alternativ ein JS-Object mit Eigenschaften "label" und "value" angegeben werden. "value" ist dabei eine Funktion, die mit dem aktuellen Dokument als Parameter aufgerufen wird.

Dateien ...

Das obige Beispiel sendet die CSV-Daten direkt zum Browser.

Alternativ können die Daten aber auch in eine Datei geschrieben werden:

AFW.Util.csvWriter({
...
}).write("/tmp/adressen.csv", "ISO-8859-1")

Dazu übergibt man der Methode write() als Parameter den Dateinamen (oder ein java.io.File Object) und optional ein Encoding für die Datei (der Default ist UTF-8).