Export Daten als CSV Datei
Hallo, ich möchte Daten aus einer einzigen Tabelle in eine CSV Datei abspeichern. Gibt es dazu evtl schon einen Beispiel Code?
Herzlichen Dank!
12 Antworten
-
Wichtig wäre, die Spaltenbezeichnung anzupassen, damit ich die Daten an anderer Stelle problemlos einlesen kann. Ansonsten wäre es über eine Ansicht möglich gewesen. Allerdings hätte ich gerne einen Button an passender Stelle, den den CSV Download auslöst. Sofern das möglich überhaupt ist.
-
Hallo Heidi
Mir ist keine Ninoxeigene Funktion bekannt, die aus Ninox heraus eine csv-Datei per Script erstellen kann.
(Bleibt nur die manuelle Erzeugung über das Zahnrad)
Mit dem Anbieter carbone.io besteht die Möglichkeit eine csv-Datei aus Ninox-Daten zu erstellen.
Dabei kann man wie gewünscht, per Button das Erzeugen auslösen und die Spaltenbezeichnung selbst festlegen.
Ich habe es selbst noch nicht ausprobiert, werde aber mal ein Beispiel bauen und sehen ob es funktioniert. -
Moin, da CSV-Dateien ja auch nur Textdateien sind, sollte es mit createTextFile() gehen. Zum Beispiel:
createTextFile(this, myRow1 + myRows, myFileName)
In die Variable myRow1 würde man vorher die erste Zeile mit den Spaltenbezeichnungen schreiben, in myRows mit einer Schleife die Datensätze. Und der Dateiname bekommt ".csv" als Erweiterung.
-
PS: Ich hatte vor einiger Zeit für einen anderen User mal ein Beispiel dazu gemacht. Die Datei sollte immer noch verfügbar sein:
-
Hallo heidi,
wie der Uwe schon sagte, gibt es keine fertige Funktion dafür. Mit ein paar Tricks kann man aber die csv erstellen und in ein Bildfeld speichern.
Angenommen die Tabelle heist KUNDEN und die Felder heißen ANREDE, FORNAME, NACHNAME, EMAIL. Dann ist die Formel für einen Button:
---
let myHeader:= "ANREDE,FORNAME,NACHNAME,EMAIL";
let myBody:=for i in select KUNDEN do
concat(i.[ANREDE, FORNAME, NACHNAME, EMAIL])
end;
let myCSV:=myHeader+"
"+join(myBody,"
");
BILDFED:=createTextFile(this,myCSV,"Dateiname.csv")
---Als Ergebnis sollte eine Kommagetrennte CSV Datei im Bildfeld erscheinen. Das ist ein einfaches Beischpiel für den Fall, wenn nur die Texte in der CSV sind. Wenn es die Texte und Zahlen sind muss man in der Schleife statt Array die Werte eihnfach nacheinander rein schreiben
Leo
-
Hallo Heidi
Ich habe es jetzt mal mit Carbone getestet und es wird per Script eine csv-Datei aus einer vorhandenen Ninox-Tabelle erstellt.
Dabei können der Inhalt der Tabelle, sowie die Spaltenüberschriften für die csv selbst definiert werden.
Die Datei kann mit MS-Ofiice / LibreOffice / Numbers als Tabelle geöffnet und bearbeitet werden. Auch kann man sie in eine Ninox-Tabelle importieren.
Als Trennzeichen wird das einfache Komma für die Spalten verwendet.
Hierzu ist ein Account bei carbone.io notwendig, der in der kostenlosen Version 100 Dateierstellungen pro Monat enthält.
Im deutschen Webinarteam von Ninox findest du eine Ninox-Datenbank '343_Druckalternative Carbone' zum herunterladen.
Darin sind Beispiele und Code enthalten, wie aus Ninox mit carbone verschiedene Dateiformate erstellt werden können.
Um die Datenbank zu nutzen, musst du deinen Carbone-API-Key und Ninox-API-Key eintragen.
-
Na, das nenne ich mal Service. Ein Problem, drei Lösungen. ;)
-
Wow! Ihr seid ja klasse! Vielen Dank Euch allen! Ich arbeite das mal in Ruhe durch und werde mich melden, wenn ich es umgesetzt habe :-) Ich wünsche Euch allen eine schöne Woche!
-
Guten Abend,
ich habe ein ähnliches Problem und bin auf dieses Forum gestoßen.
Zu aller Erst: Ihr seid echt alle ein Hit! Vielen Dank für Eure Unterstützung!Habe jedoch eine Frage an Hrn. Leonid Semik.
Bei mir ist es der Fall, dass es verschiedene Feldtypen sind (Also Text, Zahl, Datum etc.) Können Sie mir bitte hier Ihre Lösung etwas genauer erklären?Vielen vielen Dank im Voraus!
Beste Grüße
Tom -
Hallo Tom,
die Texte in CSV sollten bei unterschiedlichen Typen in Anführungszeichen geschrieben werden, die Datums am besten mit format() Passend formatieren.
###
let myHeader:= "Textfeldname,Zahlenfeldname,Datumsfeldname";
let myBody:=for i in select Tabellenname do
---"{Textfeld}",{Zahlenfeld},"{format (Datumsfeld,"DD.MM.YYYY")}"
---
end;
let myCSV:=myHeader+"
"+join(myBody,"
");
BILDFED:=createTextFile(this,myCSV,"Dateiname.csv")
###Leo
-
Hallo Leo,
WOW - Echt TOP! Funktioniert einwandfrei!
Vielen vielen Dank dafür!LG
Tom -
Hallo zusammen...
Kommt man an die Beispiel-Datenbank '343_Druckalternative Carbone' aus dem Webinar-Team auch ohne ein Cloud-Abo?Bzw. ich geh davon aus, dass man in das Team nur mit Cloud-Abo kommt?
VG
Johannes
Content aside
- vor 2 JahrenZuletzt aktiv
- 12Antworten
- 1044Ansichten