Exceldaten mit PHP unter Unix lesen

Exceldaten im Microsoftformat lassen sich auch unter Unix über die OLE Schnittstelle auslesen und so zum Beispiel unter PHP weiterverarbeiten.

In diesem Artikel erhalten Sie alle nötigen Komponenten und eine Schritt für Schritt Anleitung wie Sie Exceldaten in Ihr eigenes Script einlesen und verarbeiten können.

Exceldaten im Microsoftformat lassen sich auch unter Unix über die OLE Schnittstelle auslesen und so zum Beispiel unter PHP weiterverarbeiten.

Im Folgenden werde ich beschreiben wie man unter PHP5 eine MS Excel XP Datei verarbeiten kann.

Der Zugriff erfolgt durch mehrere Layer auf PHP Ebene:

  1. OLEReader von Christian Schmidt
  2. SpreadSheet_Excel_Reader von Vadim Tkachenko
  3. Class_Excel von Dennis Hoppe

Ich werde nur auf die letzte Schnittstelle eingehen und zeigen wie man die Datenblätter, Zellen und zugehörige Formatierungen und Raw-Daten ermitteln kann.

Download

Alle Klassen und Demoquelltexte herunterladen.

Dokumentation

Zunächst die Klasse inkludieren und initialisieren:

// Klassen inkludieren:
Include 'class_excel.php';

// Excel-Objekt erstellen:
$exl = New Excel('example.xls');

Auslesen der Eigenschaften der Datenblätter:

// Anzahl der Datenblätter ermitteln:
$count_sheet = $exl->countSheets();

// Eigenschaften der Datenblätter lesen:
For ($x = 0; $x < $count_sheet; $x++){
 $arr_sheet = $exl->getSheet($x);
 $name = $arr_sheet['name'];
 $rows = $arr_sheet['numRows'];
 $cols = $arr_sheet['numCols'];

  Echo 'Das Datenblatt '.$x.' heißt '.$name.' und hat einen '.
        'Umfang von '.$cols.' Spalten und '.$rows.' Zeilen. ';
}

Auslesen der Zellinhalte:

// Daten der Zellen auslesen:
$arr_data = $exl->getSheetData(0);

// Zellen als Tabelle darstellen:
Echo '';
ForEach ($arr_data AS $arr_row){
  Echo '';
  ForEach ($arr_row AS $cell){
    Echo '';
  }
  Echo '';
}
Echo '
'.$cell.'
';

Zellformatierungen und die Raw-Werte der Zellen kann man über getCellInfo() auslesen. Die Funktion gibt ein zwei-dimensionales Array zurück wobei der erste Index die Zeile und der zweite Index die Spalte der Zelle angibt. Gültige Schlüssel für das Array sind z. B. „type“ und „raw„.

// Details zu den einzelnen Zellen:
Print_R ( $exl->getCellsInfo(0) );