[PHP] Excel Datei einlesen über COM (vllt einfach!)
-
hi,
ich möchte daten aus einer excel-datei importieren (liegen so vor, kann man nix machen, muss automatisch gehen). ich dachte erst daran, die datei irgendwie binär zu lesen und das dann im script zu interpretieren.
aber es geht tatsächlich einfacher. nur dass ichs halt nicht hinbekomm. (über COM, hab davon keine ahnung
):
$AdoDB=new COM('ADODB.Connection') or die('! ADODB.Connection'); $AdoDB->Provider='Microsoft.Jet.OLEDB.4.0'; $AdoDB->Properties('Extended Properties')->Value="Excel 8.0";// <-- geht das so? $AdoDB->Open('H:\testP.xls') or die('! Open'); // <-- script-ausführung endet hier /*$AdoDB->Open('Provider=Microsoft.Jet.OLEDB.4.0'. ';Data Source=H:\testP.xls'. ';Extended Properties="Excel 8.0;HDR=No"') or die('! Open');*/ $rs = $AdoDB->execute("SELECT * FROM [Mappe1$]"); while(!$rs->EOF) { echo '<pre>'.print_r($rs->fields,true).'</pre>'; $rs->movenext(); } $rs->close(); $AdoDB->close();
führt zu => "! Open"
kennt sich da vllt jemand aus? oder sieht gleich irgend einen fehler (manchmal is man ja bei seinem code blind)
infos:
MS ExcelADO <-- ASP / VB-Script, ich hab versucht das nach php zu portieren
ADO <-- braucht man nich, aber ExcelADO basiert darauf, wie ich das verstehe
-
habs.
(endlich!)
$AdoDB=new COM('ADODB.Connection'); $AdoDB->Open('Driver={Microsoft Excel Driver (*.xls)}; Dbq=H:/testP.xls;'); $qry=$AdoDB->Execute('SELECT * FROM [Mappe1$]'); echo '<table><tr>'; $n=intval($qry->Fields->Count); for($i=0;$i<$n;$i++) { echo '<th>'.($qry->Fields->Item($i)->Name).'</th>'; } echo '</tr>'; while(!$qry->EOF) { echo '<tr>'; for($i=0;$i<$n;$i++) { echo '<td>'.($qry->Fields->Item($i)->Value).'</td>'; } echo '</tr>'; $qry->MoveNext(); } echo '</table>';
gib noch mehr möglichkeiten, aber die geht erstmal
nacht!
lw