# Tabelle in Datei speichern



## Oliver Wetzel (7 September 2019)

Hallo,

ich steh mal wieder auf dem Schlauch und sehe vor lauter Bäumen den Wald nicht mehr.

Ich habe ein Array mit 10 Strings je Arrayindex. Diesen kann ich ja auch schön in einer Tabelle in der Visu darstellen und bearbeiten etc. Nun soll diese Tabelle allerdings auch in eine Datei (z.B. CSV) geschrieben werden. Das Schreiben des Array bekomme ich ja auch hin mit der Funktion "WagoAppFileDir.FbWriteWholeFile_cpt". Allerdings sind dann alle Einträge hintereinander und nicht in Zeilen und Spalten aufgeteilt, so dass man die mit z.B. Excel wieder einlesen kann. Hänge ich am letzten String der Zeile ein CR ('$R') an, dann kann ich die Zeilen in Excel sehen, allerdings wird dann auch ein Text mit eingefügt an der Stelle des CR.

Hat da jemand einen Tip für mich?


----------



## Heinileini (7 September 2019)

Oliver Wetzel schrieb:


> Hänge ich am letzten String der Zeile ein CR ('$R') an, dann kann ich die Zeilen in Excel sehen, allerdings wird dann auch ein Text mit eingefügt an der Stelle des CR.


An der Stelle des CR wird ein Text eingefügt?
Was für ein Text? Wo kommt der her? Wird der schon in der CSV-Datei dort eingefügt, wo Du das CR anhängst? Wie hängst Du das CR an?


----------



## PN/DP (7 September 2019)

Ich kenne die Wago-Funktion nicht, doch ich vermute, Du musst zunächst Deine Strings lückenlos hintereinander in einem Speicherbereich/Buffer für die Datei-Schreib-Funktion anordnen (zumindest zeilenweise), z.B. mit CONCAT oder selbst zusammenbasteln, falls > 254 Zeichen.
Damit Excel eine Zeile in Spalten aufteilen kann, müssen die Werte einer Zeile mit einem Trennzeichen getrennt werden - üblicherweise mit einem Semikolon ';' bzw. mit dem Trennzeichen, was im Zielsystem als Listentrennzeichen eingestellt ist.

Das CR ('$R') wird oft als Zeilenende-Zeichen verwendet, manchmal auch $N, mancmal auch beide zusammen. Gibt es in dem Wago-Programmiersystem eine eindeutige Dokumentation, welche Zeichen mit  $R und $N (und $L) gemeint sind (numerischer Wert der Zeichen)? Um Windows-kompatibel zu sein, sollte die Zeilenende-Kennzeichnung die Steuerzeichen $0D$0A sein.

Harald


----------



## holgermaik (7 September 2019)

Hallo Oliver
Der FB WagoAppFileDir.FbWriteWholeFile_cpt schreibt deine Daten so wie sie sind hintereinander in eine Datei ohne jegliche Formatierung.
Wenn du eine csv haben möchtest musst du wie Harald schreibt deine String's erst nach csv Konvention aufbereiten (Titel, Trennung, Zeilenende, usw..)


----------



## teichhei (8 September 2019)

Wie schon gesagt was geschrieben wird ist ein stream, alles andere muss man selbst machen wie trennzeichen und neue Zeile.
Die Wago App String hat ein paar Concat funktionen mit denen du deine wert1;wert2;wert3;$n$r zusammen bauen kannst.
Allerdings musst du aufpassen dass alle Funktionen auch die Stringlänge unterstützen. 
Ansonsten gibt es bei den Wago Apps auch eine Funktion zum Anhängen aus einem Buffer (Byte array).
Ich hab die Zeilen mit concat gebaut und in einen Buffer kopiert. Wenn da was drin ist wird der Buffer kopiert und an das CSV log angehängt. Während das passiert kann schon wieder in den Buffer geschrieben werden. Das File schreiben dauert ein paar Zyklen.


Sent from my SM-G975F using Tapatalk


----------

