Mit Array ( Excel) verdammt langsam

  • Hallo,

    habe da ein Problem mit meinen Skript.

    Teil vom skript


    Es rennt so weit, bis auf das Datum da sind nur Rauten drin oder komische Zahlen. Denke aber mal das dies wohl eher ein Problem von Excel ist als von Autoit.
    Ähm nicht das gleich auf mich losgeschlagen wird, ist einer meiner ersten Skripte ( und alles nur zusammengesucht und zum laufen gebracht) :D
    Fange erst an mit Autoit.

    Beispiel einer Datei aus der gelesen wird :
    Das ist die Tabelle die ich bekomme. Diese kann ich nicht ändern da sie automatisch erstellt wird.

    Tabelle aus der gelesen wird


    Beispiel einer Datei in die geschrieben wird :
    Hier werden die Daten dann wieder eingefügt.

    Tabelle in die rein geschrieben wird


    Mein Problem ist es das es sehr langsam geht. Das Einlesen der Array´s geht noch nur das Schreiben in die neue Tabelle ist verdammt langsam.
    Die Tabellen sind bis zu 50MB groß. Gibt es da noch andere Möglichkeiten das umzusetzen ?
    Habe hier Klick mich mal was von Listen gelesen aber hmm, naja nur gelesen und null verstanden.


    MFG
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    3 Mal editiert, zuletzt von oh-ha (31. Dezember 2009 um 15:57)

  • Ich denke, dass es wohl kaum an den arrays liegt. Definiere mal langsam. Mir persönlich fehlt leider die Erfahrung mit Excel UDF's, aber kannst du nicht einfach eine CSV Datei erstellen, und diese dann bei excel importieren? Das sollte doch unter Umständen schneller gehen. Zumindest hab ihc mir das so in meinem kleinen Köpfchen zusammengebraut.

  • Hallo und frohe Weihnachten,

    naja kann bis zu einer Stunde gehen das ganze. Sind auch Dateien bis zu 50MB die da hin und hergebaggert werden. Das komische ist das die Datei die von der Anlage kommt in *.xlt Format rauskommt.
    Wenn man die allerdings in Excel aufmachen will geht das nur über den Textkonvertierungs-Assistenten. Also war das für mich eine verkappte csv Datei. Deshalb habe ich die dann ja auch im Skript einfach
    umbenannt in *.csv. Dann wird die von Excel auch richtig erkannt. Könnte es sein das ich die einfach so belassen sollte im xlt Format ? ?(

    Was ich gerne mal probieren möchte ist das über Listen zu machen Klick mich nur muß ich ehrlich sagen das ich keinen blassen schimmer davon habe wie man das umsetzen kann. Verstehe das da noch nicht mal im Ansatz.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Ich verstehe nicht, warum du das von der einen in die andre Datei kopierst. Machst du das nur, um an den Anfang der Tabelle noch die Kopfzeilen einzufügen? Mit folgenden Befehlen solltest du dafür eine Leerzeile am Anfang der Tabelle bekommen, wiederhole es für jede Zeile, die du brauchst ;)

    [autoit]

    $oExcel.ActiveSheet.Range("A1:A1").Select
    $oExcel.ActiveCell.EntireRow.Insert (1)

    [/autoit]
  • Hallo,

    Zitat von progandy

    Ich verstehe nicht, warum du das von der einen in die andre Datei kopierst. Machst du das nur, um an den Anfang der Tabelle noch die Kopfzeilen einzufügen

    jepp zum teil schon. Habe mir einen Kopf für die Tabelle zusammengestellt mit Grafik und auch einigen anderen
    Angaben. Dann habe ich diese fertige Excel-tabelle auch noch mit Formeln versehen die eine Auswertung der Daten machen. Füge, im Gegensatz zur ersten Tabelle, noch Zeilen ein in der das Ergebnis einer Berechnung steht.
    Habe mir eine Gui gemacht in der dann auch noch weitere Angaben im Kopf hinzugefügt werden können.
    Wenn es denn mal irgendwann Funktionieren sollte. :rolleyes:
    Kämpfe mich da irgendwie durch Autoit. Bin halt ein Anhänger von " learning by doing "
    Danke dir für den Code den kann ich auch gut gebrauchen zwecks ändern der Kopfzeile.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Was ich gerne mal probieren möchte ist das über Listen zu machen Klick mich nur muß ich ehrlich sagen das ich keinen blassen schimmer davon habe wie man das umsetzen kann. Verstehe das da noch nicht mal im Ansatz.

    BugFix hatte dafür schon eine UDFgemacht. Die Funktionen sind eigentlich selbsterklärend.

  • Ups, sorry das hatte ich nicht gesehen. Da ist mir das Brett vorm Kopf wohl vor die Augen gerutscht.
    Na da habe ich ja erst einmal ne menge zu verarbeiten.
    Werde das hier mal auf gelöst stellen.

    Danke dir und noch einen schönen Feiertag
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit