Machbarkeit: Daten aus Excel per Copy&Paste im Webformular einfügen

  • Guten Morgen.


    Gegeben ist eine kleine Excel-Tabelle (a) mit ca. 12x150 befüllten Zellen. Diese Daten werden mit dem Inhalt einer zweiten Excel-Tabele (b) verglichen, die Treffer in eine dritte Tabelle (c) geschrieben und anschließend manuell als CSV gespeichert. Soweit funktioniert es auch.
    Jetzt soll dies über ein Webformular vereinfacht werden. Die Idee ist, die Eingaben mit SOLL-Werten in einer MySQL-DB zu vergleichen und die Treffer als CSV herunterzuladen. Wichtig ist mir vor allem die intuitive Bedienung, drei Schritte (in Excel markierte Zellen kopieren, im Webformular einfügen und per Klick auf den Download-Button die CSV erhalten) sind mein Ziel.
    Nun suche ich nach einer Antwort, wie ich den gesamten Inhalt der vorliegenden Excel-Tabelle (a) in einem Vorgang per Copy&Paste in die entsprechenden Felder des Webformulars einfüge.


    Vielen Dank im Voraus für Ideen und Lösungsvorschläge.

  • Das ist mit Javascript gar nicht so schwer umzusetzen. Bist du damit vertraut?


    Wenn man eine Excel Tabelle kopiert, erhält man folgende Ausgabe:


    Code
    Spalte 1	Spalte 2
    Zeile 1	Wert 1.1	Wert 1.2
    Zeile 2	Wert 2.1	Wert 2.2


    Jetzt muss man wissen, dass jede Zelle (bis auf die letzte in einer Zeile) mit dem HT-Steuerzeichen versehen ist (Horizontal Tab). Die letzte Zelle einer Zeile endet mit dem LF-Steuerzeichen (Line Feed/New Line). Die Steuerzeichen werden natürlich nicht angezeigt sondern ausgeführt, theoretisch sieht der kopierte Text so aus:


    Code
    \t   Spalte 1\t   Spalte 2\n
    Zeile 1\t   Wert 1.1\t   Wert 1.2\n
    Zeile 2\t   Wert 2.1\t   Wert 2.2\n


    Mit der Split-Funktion von Javascript kann man jetzt die Zeilen zerteilen:


    JavaScript
    var excelInput; // Enthält den kopierten Text aus Excel
    var rows = excelInput.split('\n');


    Daraus ergibt sich ein Array mit 4 Elementen. Das letzte Element kann leer sein, muss aber nicht. Eine kurze Prüfung und wenn leer dann weg damit:


    JavaScript
    (rows[rows.length-1] == "") ? rows.pop() : rows;


    Wenn man jetzt mit einer Schleife durch die Elemente läuft und nun \t splittet, erhält man für jede Zelle einen Eintrag im multidimensionalen Array:


    JavaScript
    for (var i = 0; i < rows.length; i++)
    {
        cells[i] = rows[i].split('\t');
    }


    Jetzt kann man mittels cells[Zeilenindex][Spaltenindex] auf gewünschte Zellen zurückgreifen.


    Das könnte man zum Beispiel dafür nutzen, um vorhandene Input Felder zu füllen, komplett neue Input Felder aus der Tabelle zu generieren, oder wie in meinem Beispiel (hier: codepen/YqZXwE) die Tabelle als HTML Tabelle generieren.


    Was genau du machst kommt natürlich darauf an was du vorhast. Hat die Tabelle einen festen Aufbau? Kann die Tabelle sich unterscheiden? Sollen bereits vorhandene Input Felder gefüllt werden?


    Außerdem berücksichtigt diese Methode natürlich nicht alle Fälle. Formatierung geht völlig verloren und bei verbundenen Zellen werden diese zwar berücksichtigt, aber als unverbunden vermerkt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!