Daten aus Excel in PHP nutzen

Sehr oft kommt es vor, dass Daten in einer Excel-Tabelle vorliegen und wir diese in PHP nutzen möchten. Dabei ist es oft mit einem einmaligen Export getan und der Aufwand soll überschaubar bleiben.

Der erste spontane Lösungsansatz ist, nach einer Möglichkeit sich umzusehen, eine Excel-Datei irgendwie direkt einlesen zu können. Das macht nur sehr bedingt Spaß, da es sich bei Excel-Dateien mit der Dateieinung .xls um ein proprietäres Format handelt, dass sich intern je nach Excel-Version ändern kann.

Meistens sind wir weder an Formeln noch an Design interessiert, dass Excel mit in den Excel-Dateien abspeichert. Wir wollen nur die Daten nutzen.

Wenn wir die Daten aus nur einem Tabellenblatt (was meistens der Fall ist) benötigen, ist die Vorgehensweise herzhaft einfach! „Copy and paste“ ist die Lösung. Im ersten Schritt alle Daten des Excel-Tabellenblatts markieren (STRG + a) und dann in die Zwischenablage kopieren (STRG + c). Und wohin nun damit? In ein HTML-Formular-Feld – dieses wird dann an ein kleines PHP-Script gesendet. Das PHP-Programm trennt die Zeilen und die Spalten und kann daraus dann das benötigte Endprodukt basteln oder wir speichern die Daten einfach in einem Array ab und können dieses dann Eintrag für Eintrag durchlaufen.

PHP-Programm erstellen zum Excel-Daten auslesen

Nun bauen wir Schritt für Schritt das Programm auf. Als erstes benötigen wir ein einfaches HTML-Formular. Da sehr viele Daten kommen können, müssen wir über die Methode „post“ übertragen und ein <textarea> nutzen:

<h1>aus Excel-Tabelle über copy und paste einfügen</h1> <form name="" action="" method="post"> <textarea name="inhalt" rows="10" cols="160"></textarea> <br> <input name="" type="submit" value="speichern"> </form> 

Wir speichern unser PHP-Programm unter dem Dateinamen „daten-aus-excel-nutzen.php“ ab.

Nachdem wir bei „action“ kein Ziel eingetragen haben, ruft sich das PHP-Programm selber auf. Also werden wir vor der Formularausgabe eine Abfrage einbauen, ob bereits Daten aus dem Datenfeld „inhalt“ übertragen wurden:

<?php if ( isset( $_REQUEST['inhalt'] ) and trim( $_REQUEST['inhalt'] ) <> '' ) {     // Daten verarbeiten     exit; } ?> <form name="" action="" method="post"> <textarea name="inhalt" rows="10" cols="160"></textarea> <br> <input name="" type="submit" value="speichern"> </form> 

Kommen Daten rein (sprich das Formular wurde mit den aus Excel herauskopierten Daten über die Zwischenablage gefüllt und abgesendet) können wir diese Daten aufbereiten.

Dazu trennen wir die einzelnen Zeilen über die PHP-Anweisung explode und der Zeichenfolge für das Zeilenende „\r“. Das Ergebnis packen wir in das Array „$zeileninhalt“.

if ( isset( $_REQUEST['inhalt'] ) and trim( $_REQUEST['inhalt'] ) <> '' ) {     // Daten verarbeiten     $zeileninhalt = explode("\r", $_REQUEST['inhalt']);     exit; } 

Jetzt haben wir einzelne Zeilen und müssen die einzelnen Zellen noch aufteilen. Wir durchlaufen das Array „$zeileninhalt“ und wenden wieder die PHP-Anweisung explode mit der Zeichenfolge für TAB-Stops an „\t“.

    foreach ($zeileninhalt AS $nr => $zeile) {         $daten[$nr] = explode("\t", $zeile);     } 

Um eventuelle Leerzelle vorzubeugen, killen wir diese über die Anweisung trim.

    foreach ($zeileninhalt AS $nr => $zeile) {         $daten[$nr] = explode("\t", trim($zeile));     }  

Nach dieser Aktion liegt der komplette Excel-Zwischenablage-Inhalt in dem Array mit dem Namen „$daten“ vor und kann nun beliebig mit PHP weiter genutzt werden.

Hier der komplette PHP-Programmcode:

<?php if ( isset( $_REQUEST['inhalt'] ) and trim( $_REQUEST['inhalt'] ) <> '' ) {     // Daten verarbeiten     $zeileninhalt = explode("\r", $_REQUEST['inhalt']);     foreach ($zeileninhalt AS $nr => $zeile) {         $daten[$nr] = explode("\t", trim($zeile));     }     echo "<pre>";     print_r($daten);     exit; } ?> <h1>aus Excel-Tabelle über copy und paste einfügen</h1> <form name="" action="" method="post"> <textarea name="inhalt" rows="10" cols="160" style="width: 100%;"></textarea> <br> <input name="" type="submit" value="speichern"> </form> 

Jetzt könnten wir die Daten natürlich in eine MySQL-Datenbank noch schreiben oder andere Dinge damit anstellen – je nach Aufgabenstellung.

Viel Spaß beim Testen und nutzen des kleinen Hilfsprogramms.