odbc excel php und spaltenwerte
frankx
- datenbank
Hellihello
mit
<?php
$path = realpath("Produktliste.xls");
$defaultDir = dirname($path);
$connectionString =
'Driver={Microsoft Excel Driver (*.xls)};'.
'DriverId=790;'.
'Dbq='.$path.';'.
'DefaultDir='.$defaultDir.';';
$conn = odbc_connect($connectionString,"","") or die(odbc_error_msg());
$sql2 = 'select * from [aktuell2$]';
$result2=odbc_exec($conn, $sql2);
for ($i=1;$i<28;$i++) {
odbc_fetch_row($result2,$i);
echo $i.": 1- ".odbc_result($result2,1)." \t 2- ";
echo odbc_result($result2,2)." \t 3- ";
echo odbc_result($result2,3);
echo " \t ende\n";
}
odbc_close($conn);
?>
kann ich prima auf die Inhalte einer Exceltabelle via PHP zugreifen. Allerdings folgendes Phäomen: Wenn in einer Spalte in den ersten 10 Zeilen nur Leezeichen (oder Strings) sind, und dann in Zeile 11 eine Zahl auftaucht, wird nicht nur der Wert dieses Feldes nicht übergeben an PHP sondern die ganze Zeile wird von PHP nicht erwischt. (Funktioniert auch schon in früheren Zeilen).
Ich glaube, dass Excel anhand der ersten acht Zeilen bestimmt, um welchen Datentyp es sicht handelt und dann scheinbar den jeweils anderen nicht übergibt. Man kann den Spieß auch umdrehen, wenn erst Zahlen auftauchen und dann plötlich ein String gibts den selben Effekt. Die excelinterne Formatierung als "Text" für die ganze Spalte bringt nichts.
Ich meine aber, dass es gehen sollte, denn ich habe ein Java-Programmchen, was aus selbiger Tabelle die Werte problemlos ausliest (ist nicht von mir, weiß nicht, ob es da noch Ergänzungen in dem odbc-connect gibt, die den Excel-Treiber dazu bringen, einfach alle Feldwerte zu übergeben, typenunabhängig).
Für Tipps dankbar,
frankx