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
        Administrator

          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
          Administrator

            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
              Administrator

                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
                  Administrator

                    Ooooookay! 🙂

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