Datagrid – Import CSV

Startseite Foren Deutsches LiveCode-Forum Datagrid – Import CSV

Ansicht von 6 Antwort-Themen
  • Autor
    Beiträge
    • #2556
      AnHa
      Teilnehmer

      Hallo Zusammen,

      ich habe gerade erst mit Livecode begonnen.

      Nun bräuchte ich doch schon einmal eure Hilfestellung.
      Aktuell versuche ich über ein Datagrid eine csv-Artikel-Datei (semikolon getrennt) einzulesen.
      Leider funktioniert dies nicht so richtig.
      Statt die Daten Spalte für Spalte zu schreiben wird alles in Spalte 1 eingefügt.
      Habe es ebenfalls nach folgendem Tutorial probiert. Aber irgendwas mache ich falsch.

      http://lessons.livecode.com/m/4071/l/12063-how-do-i-rename-the-headers-on-a-text-file

      Ich bräuchte keine Header. Nur die reinen Artikeldaten (5 Spalten).

      Danke vorab.

    • #2558
      Klaus Major
      Verwalter

      Hallo AnHa,

      1. willkommen im Forum! 🙂

      2. Bitte post das/die Skript/e, mit dem Du die Datei importiert und ins Datagrid packst.
      Raten dauert einfach zu lange! 😉

      Gruß

      Klaus

    • #2560
      Klaus Major
      Verwalter

      Wichtig:
      Hast Du die fünf Spalten (columns), die Du benötigen wirst, bereits für Dein Datagrid erstellt?
      Das ist unbedingt erforderlich!

    • #2562
      AnHa
      Teilnehmer

      Hallo Klaus,

      vielen Dank für den Willkommensgruß.

      Die 5 Spalten habe ich noch nicht für mein Datagrid erstellt.
      Ich dachte, dass diese automatisch eingelesen werden.
      Wie erstelle ich diese am besten?

      Folgendes Skript habe ich verwendet:

      on mouseUp
      local tFileName, tFileContents

      answer file „Please choose a file to import“ with type „comma Separated Values|csv|CSV“
      if the result is not „cancel“ then
      put it into tFileName

      ## Get the contents of the file
      put URL („file:“ & tFileName) into tFileContents

      ## Display the file contents in the field
      put line 1 of tFileContents into tColumnTitles
      replace comma with return in tColumnTitles
      set the dgProp[ „columns“ ] of group „text“ to tColumnTitles

      end if

      replace semicolon with tab in tFileContents
      set the dgText[true] of group „text“ to tFileContents

      ## Get the complete data
      put the DGData of grp „text“ into tArray

      ## Set the data of the datagrid back to the now modified array
      set the DGData of grp „text“ to tArray

      end mouseUp

      DANKE

      Gruß

      Andreas

    • #2564
      Klaus Major
      Verwalter

      Hallo Andreas,

      die Spalten werden leider nicht automatisch erstellt.

      Die Spalten kannst Du im Inspektor für Dein Datagrid erstellen.
      Ein Klick auf das PLUS Zeichen erstellt eine neue Spalte.

      Das Skript setzt voraus, daß die erste Zeile der CSV Datei die Spaltennamen enthält!
      Tut sie das? Ich gehe mal davon aus, daß dem nicht so ist.

      Ich habe das Skript mal etwas verschlankt, erstelle einfach mal fünf Spalten,
      egal, wie die heissen und probiere dann dieses Skript aus und lies mekine Kommentare:

      on mouseUp
         ## Deklarieren der Variablen ist nur erforderlich, wenn Du "Strict Compilatiuon Mode" 
         ## in den Voreinstellungen für den Skript Editpr angekreutzt hast!
         ## local tFileName, tFileContents
         answer file "Bitte eine CSV-Datei zum Import auswählen" with type "comma Separated Values|csv|CSV"
         
         ## Ich vermeide längere IF THEN END IF Klauseln, wo immer möglich :-)
      ## User hat CANCEL geklickt, es gibt also keinen Grund hier und jetzt weiter zu machen!
         if the result = "cancel" then
            exit mouseup
         end if
      
         put it into tFileName
         ## Inhalt der Datei in Variable lesen
         put URL ("file:" & tFileName) into tFileContents
         
         ## Datagrids benötigen TAB getrennte Werte:
         replace ";" with tab in tFileContents
         
         ## Nun einfach die Property "dgtext" des Datagrid auf diese Variable setzen
         set the dgText of group "Dein Datagrid hier..." to tFileContents
         
         ## the dgtext[TRUE]... zeigt an, daß die erste Zeile der Datei die Spaltennamen enthält.
         ## Aber auch DAS würde die Spalten nicht erstellen, sondern dient nur dazu, die Daten 
         ## in die richtigen Spalten einzulesen, sofern die REIHENFOLGE der Spalten in der 
         ## CSV-Datei anders ist als im Datagrid in LC!
      end mouseUp

      Gruß

      Klaus

    • #2566
      AnHa
      Teilnehmer

      Hallo Klaus,

      SUUUUPPPEERR!

      Es hat mit deinem Skript (natürlich) funktioniert :o)
      Durch deine gekürzte Fassung habe ich es jetzt auch verstanden.

      Spalten sind auch drin.

      Jetzt kann weiter testen.
      Som macht es Spaß !

      Danke

      Andreas

    • #2568
      Klaus Major
      Verwalter

      Ooooookay! 🙂

Ansicht von 6 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.