Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Spalte einer csv datei lesen

  1. #1
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    eine Zeile ließt man so:

    Do While f.Line < 4
    f.SkipLine
    Loop
    line = f.ReadLine

    wie ließt man eine Spalte?

    Gruß
    Zitieren Zitieren Spalte einer csv datei lesen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ganze Zeile einlesen und dann nach den Separatoren (Trennzeichen, meist ';' ) suchen + abzählen oder gleich mit z.B. Split(...) zerlegen. hier ein Beispiel wo Split benutzt wird
    Weißt Du was eine csv-Datei ist? Öffne mal eine mit einem Text-Editor.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ja. Meine csv-Datei hat in diesem Fall als Trennzeichen auch ein Semikolon. Wie man eine Zeile ließt, ist mir klar, nur wie man eine Spalte ließt weiß ich leider nicht. Es gibt doch diesen Befehl "Object.column". Wollte es genau wie mit object.line machen, ging aber leider nicht.

  4. #4
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ich könnte ja, jetzt alle Zeilen auslesen und dann die Zellen für die erste Spalte auswerten. Viel schneller ist es doch, wenn ich die gewünschte Spalte auslesen könnte. Geht das nicht? Ich brauche die Daten nur in der ersten Spalte.

  5. #5
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Split ist genau für diesen Zweck gemeint.
    Es steht alles in Haralds Beitrag #2.
    Jesper M. Pedersen

  6. #6
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Bei 95 Zeilen ein bisschen mühselig, wenn ich so mache wie im ersteb Beitrag gemeint oder ich nehme eine Schleife vielleicht.

  7. #7
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Wenn du viele Variabeln hast, dann geht es recht einfach wenn die Variabeln in ein ARRAY sind.

    Sonnst wäre es vielleicht besser wenn du den Aufgabe löst durch Rezepte anstatt VBS.
    Jesper M. Pedersen

  8. #8
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Do While f.Line < 4
    f.SkipLine
    Loop
    line = f.ReadLine

    linearray = Split(line,Trennzeichen)

    SmartTags("Test1_0") = linearray(1)



    Do While f.Line < 5
    f.SkipLine
    Loop
    line = f.ReadLine

    linearray = Split(line,Trennzeichen)

    SmartTags("Test1_0") = linearray(1)

    Für jede Zeile müsste ich das jetzt machen. Könnte ein großes Skript werden, wo immer das gleiche steht, außer der Zeile. Eine Schleife weiß ich hier nicht zu verwendne.

    Mit Rezepten ist jetzt eine andere Sache. Das kann ich machen wenn ich das mit VBS gemacht habe

  9. #9
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Wie gesagt, wenn deine Variabeln in ein ARRAY plaziert sind, dann geht es einfach mit ein Schleife.

    Z.B. wenn "TEST1_0" ein ARRAY von 10 Variabeln ist, dann durchschleifst du den ARRAY so:

    Code:
    Index = 0
    Do While f.AtEndOfStream <> True & Index < 10
    
        Line = f.ReadLine
        Linearray = Split(Line, ";")
        SmartTags("Test1_0")(index) = Linearray(0) ' ....... oder Linearray(x) abhängig von welchen Kolonne der Wert steht.
        Index = Index + 1
    Loop
    Dies ist nur ein einfache Beschreibung.
    Zusätscliche Checks und Fehlerhantierung muss du selber machen.

    Wenn du hast sehr viele Variabeln die nicht in ein oder mehrere ARRAYs arangiert werden kann, dann denke ich das du den Aufgabe besser mit Rezepte lösung kann.


    Jesper M. Pedersen

  10. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    kuti (05.03.2014)

  11. #10
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe jetzt deinen code ausprobiert , mir also 3 EA-Felder ins Startbild platziert, jedoch ließt er immer den selben Wert und zwar ganz am Ende der Spalte. Also da steht immer dasselbe.

Ähnliche Themen

  1. TwinCAT FTP-Client ErrId 6 /Upload einer CSV Datei
    Von Hans_J im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 05.03.2014, 15:03
  2. Antworten: 3
    Letzter Beitrag: 29.11.2013, 13:53
  3. CSV Datei mit einer Wago Sps erstellen
    Von Newbie88 im Forum Sonstige Steuerungen
    Antworten: 14
    Letzter Beitrag: 03.11.2012, 23:09
  4. Antworten: 6
    Letzter Beitrag: 05.01.2009, 11:09
  5. Antworten: 10
    Letzter Beitrag: 18.10.2007, 19:54

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •