CSV per Lotus Script importieren

  • Hallo zusammen,


    ich habe mit hilfe des Forums und Google einen Script angepasst.


    Dieser Script soll mit eine CSV Datei in eine Notes Datenbank importieren.


    Mein Problem ist, das er jede Zeile in ein Feld schreibt und nicht jede Spalte in ein Feld und nach jeder neuen Zeile sollte er ein neues Dokument beginnen.



    kann mir jemand Helfen?

  • Der Zeile
    Input #filenum%, teil
    holt den KOMPLETTE zeile aus dein CSV datei. Die mußtest du danach zerlegen durch jeweils den trennzeichen zu suchen, und mittels Left und Left back den rest zu trennen.. Oder mittesl Left und mid. Dann ist einen zuweisung möglich.


    Der lineinput kennt so weit ich weiß keine trennzeichnen für das einlesen mehrere werten.


    Ich lasse mich aber gerne ein besseres belehren.


    Ronka

  • Hmm, die hilfe von Input sagt mir..


    Input[$] ( count , [#]fileNumber )
    count : The number of characters to read.
    fileNumber : The number assigned to the file when you opened it.
    Return value : The Input function returns a Variant, and Input$ returns a String.


    Damit kann es mein gefuhl nach NUR einen bestimmte länge holen, und nicht bis zu ein trennzeichen.


    Aber weitere hilfe dokumente zeigen das input #Filenum , fields tatsächlich die möglichkeit bietet.


    Voraussetzung ist dann der KOMMA als trennzeichen der felder in der Zeile.


    Sprich CSV datei muss mit Komma's aufgebaut sein um dieses so verwenden zu können....


    Ronka

    • Offizieller Beitrag

    arbeite doch mit
    - Line Input #fileNumber , varName zum Einlesen einer Zeile
    - ein Split teilt dir den Inhalt auf ein Array auf und
    - dann die Inhalte noch in die Felder schreiben


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Also einen Sub zum auftrennen ist relativ einfach, ArraySet ( Tabelle , String )


    Sub ArraySet(Tabl() As String, Chaine As String)
    Dim i,start,Element As Integer
    Dim temp As String


    start=1
    Element=1
    Do
    i=1
    Do
    temp=Mid$(Chaine,start,i)
    i=i+1
    Loop Until Right(temp,1)="," Or Right(temp,1)=";" Or start+i-2=Len(Chaine)
    Tabl(Element)=LTrim$(Left(temp,Len(temp)-1 + (start+i-2=Len(Chaine))*(-1)))
    start=start+i-1
    Element=Element+1
    Loop Until Len(Chaine)=start-1
    End Sub

  • Kann man natürlich machen... oder man spart sich das alles und schreibt eine einzelne Zeile:

    Code
    Dim tabl as Variant
    Dim Chaine as String
    ' Hier chaine setzen, z.B. durch lesen aus einem File
    tabl = Split( Chaine , ";" )
    • Offizieller Beitrag

    taurec natürlich muss ich den Trenner bei Split mitgeben.


    Ich würde es ohne Schleife mit einem Split erledigen. Ist nur eine Zeile und läuft schneller. Je nachdem wie viele Zeilen du importieren willst, kann dies schon ins Gewicht fallen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hallo zusammen,


    ja mit dem Split komme ich recht unkompliziert ans Ziel.


    Ich habe in der zwischenzeit einen Excelimporter zeitgleich erstellt um erstmal die möglichkeit des Imports zu geben.


    Ich danke euch für eure Hilfe :)