Textdatei erstellen, diese füttern und abspeichern.

  • Guten Abend die Damen und Herrschaften, ich bräuchte ein kleines Script und habe weder Ahnung noch wirklich Zeit.

    Das Skript soll:

    - eine leere Textdatei erstellen
    - einen statischen Text dort einfügen (die vielen "H" im Spoiler)
    - aus einer Tabelle (xls, csv, da bin ich flexibel) die erste Zeile auslesen
    - aus der ausgelesenen Zeile den Inhalt aus Spalte A kopieren und in der Textdatei einfügen ("VAR-1A")
    - aus der ausgelesenen Zeile den Inhalt aus Spalte B kopieren und in der Textdatei einfügen ("VAR-1B")
    - aus der ausgelesenen Zeile den Inhalt aus Spalte C kopieren und in der Textdatei einfügen ("VAR-1C")

    - Textdatei abspeichern und von vorne beginnen, nur mit der nächsten Zeile aus der Tabelle, usw, usw


    Die erste txt sollte dann ungefähr so ausssehen:

    Spoiler anzeigen


    HHHHHHHHHHHHHHHHHHHHHHHHHHHH
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH:(VAR-1A)
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH:(VAR-1B)
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH:(VAR-1C)

    die zweite, usw

    Spoiler anzeigen


    HHHHHHHHHHHHHHHHHHHHHHHHHHHH
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH:(VAR-2A)
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH:(VAR-2B)
    HHHHHHHHHHHHHHHHHHHHHHHHHHHH:(VAR-2C)


    Wem das noch zu leicht sein sollte, der Wert in der Spalte B endet immer mit 8 Zahlen, optimal wäre es, wenn das Skript die Textdatei immer unter DIESEN8ZAHLEN.txt abspeichern würde.

    Über die Höhe der Vergütung kann ich schlecht eine Aussage treffen, da wird man sich sicher einig. Ich freue mich auf eine eventuelle Zusammenarbeit.

    Vielen Dank schon mal!

  • Kann die csv hier nicht hochladen, aber copy & paste tuts hoffentlich auch:

    Spoiler anzeigen


    aaaaaaaa;bbbbbbbb;xxxx12345678
    bbbbbbb;ccccccc;xxxx12345679
    ccccccccc;dddddd;xxxx12345677
    ddddddd;eeeeee;xxxx12345676

    Falls das nicht reicht lade ich die csv irgendwo hoch.

  • In deinem Beispiel sind die acht Ziffern in der Spalte C, du schreibst im ersten Post jedoch von Spalte B.

    [autoit]


    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    ; - -- --- Einstellungen Anfang --- -- -
    Global $sInputFile = "input.csv"
    Global $sOutputDir = @ScriptDir & "\output\" ;Mit '\' am Ende!
    Global $sOutputStringFormat = "Statischer Text Zeile 1: %s\r\nStatischer Text Zeile 2: %s\r\nStatischer Text Zeile 3: %s"
    ; - -- --- Einstellungen Ende --- -- -

    [/autoit][autoit][/autoit][autoit]

    Global $sFileContent = FileRead($sInputFile)
    Global $asLines = StringSplit($sFileContent, @CRLF, 3)
    Global $asData[0][3]
    Global $asTemp, $sOutputString, $sOutputFile

    [/autoit][autoit][/autoit][autoit]

    For $iLine = 0 To UBound($asLines) - 1
    $asTemp = StringSplit($asLines[$iLine], ";", 3)
    If UBound($asTemp) <> 3 Then ContinueLoop ;Ungültige Zeile überspringen
    _ArrayAdd($asData, $asLines[$iLine], 0, ";")
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($asData) - 1
    $sOutputString = StringFormat($sOutputStringFormat, $asData[$i][0], $asData[$i][1], $asData[$i][2])
    $sOutputFile = $sOutputDir & StringRight($asData[$i][2], 8) & ".txt"
    FileWrite($sOutputFile, $sOutputString)
    Next

    [/autoit]

    Im Prinzip brauchst du nur die drei Variablen am Anfang anzupassen. Sollte eigentlich selbsterklärend sein ("\r\n steht für einen Zeilenumbruch). Bei $sOutputDir kann selbstverständlich auch ein absoluter Pfad angegeben werden.

  • Danke für die Mühe, ich war aber doch recht ungenau.

    Das ist wesentlich ausfschlussreicher:

    Spoiler anzeigen


    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH1STATISCH1
    STATISCH2STATISCH2=VAR1
    STATISCH3STATISCH3
    STATISCH3STATISCH3
    STATISCH4STATISCH4=VAR2
    STATISCH5STATISCH5
    STATISCH5STATISCH5
    STATISCH6STATISCH6=VAR3
    STATISCH7STATISCH7

    Die Farben markieren die einzelnen Textblöcke welche eingefügt werden müssen. Und die Anzahl der Zeilen und deren Anordnung würde so genau mit meiner Vorlage übereinstimmen.