Exceldatei auslesen mit PHP

BugsBastard

Erfahrenes Mitglied
Hallo zusammen,

mein Kollege sagte heute morgen fröhlich zu mir: Mach mal eben ein Importscript für Excel-Dateien! :) Das Ziel ist daß eine XLS-Datei auf unseren Server geladen werden kann, die Felder automatisch ausgelesen werden und der Benutzer sagen kann wohin die einzelnen Felder gespeichert werden sollen.

Eigentlich ganz einfach :) Ich such mir gerade aber leider einen Wolf. Ich habe diverse ansätze gefunden, der der am besten t ist die COM-Klasse die PHP anbietet (zumindest kam mir das so vor).

Nun habe ich aber leider das Problem daß ich zwar eine Excel-Datei auslesen kann, aber ich nicht weiß wieviele Reihen und spalten die hat. Momentan kann ich nur die einzelnen Zellen direkt ansprechen, also z.B. C1.

Meine Frage:
1. Kann mir jemand sagen ob (und wie) ich mit der PHP-COM-Schnittstelle bei einer Excel-Datei auslesen kann wann die letzte gefüllte Zelle (nach rechts und unten) erreicht ist?

2. Gibt es per PHP-Programmierung noch eine einfache Möglichkeit eine XLS-Datei als CSV zu konvertieren?

Mein Quelltext bislang:
<pre>
<?php
function read_xls($doc)
{
$doc = $doc;
$sheet1 = 1;
$sheet2 = "sheet2";
$xls = new COM("Excel.application") or Die ("Fehler beim Öffnen der Excel-Komponente");
$Workbook = $xls->Workbooks->Open("$doc") or Die("Kann nicht geöffnet werden");
$Worksheet = $Workbook->Worksheets($sheet1);
$Worksheet->activate;
$excel_cell = $Worksheet->Range("A1");
$excel_cell->activate;
$excel_result = $excel_cell->value;
echo "$excel_result\n";

$excel_cell = $Worksheet->Range("A2");
$excel_cell->activate;
$excel_result = $excel_cell->value;
echo "$excel_result\n";

// Alles schließen
$Workbook->Close;
unset($Worksheet);
unset($Workbook);
$xls->Workbooks->Close();
$xls->Quit();
unset($xls);
return true;
}
read_xls("c:\\test.xls");
?>
</pre>

Gruss,

Bugs
 
Moin,

eine Anmerkung zu der "COM-Klasse".

Diese bietet dir keine PHP-eigenen Methoden um Excel-Dateien zu bearbeiten, sondern liefert dir bei installiertem MSExcel einen Zeiger auf die Programmier-Schnittstelle von MSExcel.

Wenn du also nach Informationen dazu suchst, bist du gut beraten, wenn du vergisst, dass es sich um PHP handelt, sondern eher in Quellen stöberst, die sich um Office-Programmierung mit VBA drehen.
 
Hi,

erstmal danke für die Antworten.

@Security: Hatte mich leider nicht wirklich weitergebracht bei meinem Problem
@Sven: Das wusste ich schon :) Ich hatte aber trotzdem gehofft daß jemand sich mal erbarmt hatte hierfür ein bisschen was für PHP zu schreiben, damit man zumindest das Grundlegende der COM-Klasse auch als PHP-Doku hätte. Allerdings hat mich dein Tipp nochmal daran erinnert daß bei uns in der EDV evtl. auch Bücher über Excel zu finden sind :) Und bei VBA mit Excel habe ich die Lösung für mein Problem gefunden, eingebettet in einen Nebensatz.

$Worksheet->UsedRange->Rows->Count; // Die Reihen die durchlaufen müssen
$Worksheet->UsedRange->Cells->Count; // Die komplette Zellenanzahl

Wenn eine Tabelle 4 Zeilen hintereinander beschrieben hat und das in eine Tiefe von 7 Reihen dann stände in Rows->Count die 7 und in Cells->Count die 28.

Eigentlich ganz einfach :) aber leider nicht sooo einfach zu finden (zumindest nicht für mich).

Vielen Dank fürs anschauen und erinnern :)

Gruss,

Bugs
 
Zurück