Hallo zusammen...
Als Neuling habe ich mich schwer getan, das lesen einer CSV-Datei zu realisieren, aber es hat am Ende doch geklappt.
Vielleicht hätte man das anders oder besser lösen können, aber das ist es, wie ich es nun umgesetzt habe.
Als "Aufgabe" hatte ich folgende Voraussetztung:
- Eine CSV-Datei mit 5 Spalten und einer nicht angegebenen Zahl an Zeilen soll gelesen werden.
- In jeder Zeile sollen die Werte der 5 Spalten in eine Variable verfügbar sein, um sie hinterher weiter zu verwenden.
- Ist die Zeile abgearbeitet soll die nächste genommen werden (ist ja fast logisch, oder )
Da ich denke, dass auch andere "Newbies" mit CSV-Dateien hantieren müssen/wollen, stelle ich hier mein Beispiel-Script zur Verfügung.
Kommentare, Verbesserungvorschläge etc. ausdrücklich erwünscht
Gruß, Matthias
Beispiel CSV-Datei:
Zeile1Wert1;Zeile1Wert2;Zeile1Wert3;Zeile1Wert4;Zeile1Wert5
Zeile2Wert1;Zeile2Wert2;Zeile2Wert3;Zeile2Wert4;Zeile2Wert5
Zeile3Wert1;Zeile3Wert2;Zeile3Wert3;Zeile3Wert4;Zeile3Wert5
AutoIt-Script:
[autoit]
;Include die benötigte UDF's
#include <File.au3>
#include <Array.au3>
;Öffnet einen "Datei öffnen Dialog" und lässt als Datei nur CSV-Dateien zu.
$file = FileOpenDialog("Datei öffnen", @ScriptDir , "CSV Dateien (*.csv)", 1 )
;Umwandeln der Datei in ein Array
Dim $array
_FileReadToArray($file, $array)
;Abarbeiten des Arrays
For $zeile = 1 To $array[0]
;Splitten der Werte anhand des Semikolons (";")
$wert = StringSplit($array[$zeile], ";")
;Test-Ausgabe der einzelnen Werte
MsgBox(0,"Hinweis", "Wir befinden uns in Zeile: " & $zeile & @CRLF & "Der Wert in Spalte 1 ist: " & $wert[1])
MsgBox(0,"Hinweis", "Wir befinden uns in Zeile: " & $zeile & @CRLF & "Der Wert in Spalte 2 ist: " & $wert[2])
MsgBox(0,"Hinweis", "Wir befinden uns in Zeile: " & $zeile & @CRLF & "Der Wert in Spalte 3 ist: " & $wert[3])
MsgBox(0,"Hinweis", "Wir befinden uns in Zeile: " & $zeile & @CRLF & "Der Wert in Spalte 4 ist: " & $wert[4])
MsgBox(0,"Hinweis", "Wir befinden uns in Zeile: " & $zeile & @CRLF & "Der Wert in Spalte 5 ist: " & $wert[5])
Next
;Ende des Scripts
Exit
Anbei noch die Datei zum autoit.de/wcf/attachment/13724/