Das ist mit Javascript gar nicht so schwer umzusetzen. Bist du damit vertraut?
Wenn man eine Excel Tabelle kopiert, erhält man folgende Ausgabe:
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:
\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:
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:
(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:
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.