Guten morgen liebe Forengemeinde.
Nachdem ich mit nun ausführlich PEAR und dem Export einer Datenbank-Abfrage in Excel-Datei beschäftigt habe, fehlt mir nun leider der passende Lösungsansatz für einen bestimmten Teil des Quellcodes.
Als erstes lasse ich die Datenbankabfrage auf dem Bildschirm in einer generierten Tabelle ausgeben:
PHP-Code:
<?php
//Config Init
$b = 0;
$bgColor_odd1 = "#CCCCCC";
$bgColor_ood2 = "#666666";
//connect to the database
$connectionstring = odbc_connect("PMU", "user", "pwd");
//SQL query
$Query = "SELECT Inventarnummer, Identnummer, Seriennummer, Modellnummer, Typ, Messplatznummer, [nächste Kalibrierung], Status FROM Meßgeräte";
// Get Result
$result = odbc_exec($connectionstring,$Query);
// Get Data From Result
while ($data[] = odbc_fetch_array($result));
// Free Result
odbc_free_result($result);
// Close Connection
odbc_close($connectionstring);
echo "<table width=75% border=1 cellspacing=1 cellpadding=1 bgcolor=#FFFFFF>";
echo "<tr bgcolor=#0000CD>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Inventarnummer</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Identnummer</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Seriennummer</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Modellnummer</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Typ</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Messplatznummer</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>nächste Kalibrierung</font></font></b></td>";
echo "<td height=22><b><font color=#FFFFFF><font face=verdana>Status</font></font></b></td>";
echo "</tr>";
if($data != NULL){
foreach($data as $row){
if($row != NULL){
print '<tr bgColor="' . ((!($b % 2))?$bgColor_odd1:$bgColor_ood2) . '">';
foreach($row as $key => $value){
echo "<td>";
echo "<font face=verdana><font size=2>$value</font></font>";
echo "</td>";
}
print '</tr>';
$b++;
}
}
}
?>
Der Benutzer hat dann die Möglichkeit, einen Link zu klicken und diese Abfrage in eine .xls-Datei exportieren zu lassen.
Nun hab ich das Problem, dass ich es einfach nicht hinbekomme die Tabelle mit dieser Abfrage fülle zu lassen.
Einfache Werte manuell reinzuschreiben klappt prima.
Mein jetziges Script zum testen hab ich hier mit der SUFU gefunden.
Ich habe es entsprechend angepasst, jedoch erüllt es noch nicht seinen Zweck.
PHP-Code:
<?php
//connect to the database
$connectionstring = odbc_connect("PMU", "user", "pwd");
//SQL query
$Query = "SELECT Messplatznummer, Inventarnummer, Identnummer, Seriennummer, Modellnummer, Typ, Hersteller, Einsatzort, [nächste Kalibrierung], Status FROM Meßgeräte WHERE Messplatznummer='$Eingabe'";
// Get Result
$result = odbc_exec($connectionstring,$Query);
// Get Data From Result
while ($data[] = odbc_fetch_array($result));
// Free Result
odbc_free_result($result);
// Close Connection
odbc_close($connectionstring);
require_once('Spreadsheet/Excel/Writer.php');
$mappe = new Spreadsheet_Excel_Writer();
$mappe->send('Alle_Messgeraete.xls');
$tabelle =& $mappe->addWorksheet('Alle Messgeraete');
$tabelle->setColumn(0,0,18); //???
$tabelle->setColumn(1,4,10); //???
$format =& $mappe->addFormat();
$format->setBold();
$ausrichtung_r =& $mappe->addFormat();
$ausrichtung_r->setAlign('left');
$ausrichtung_r->setBold();
foreach($data as $i=>$zeile) {
foreach ($zeile as $j => $feld) {
if ($i != 0) {
if ($j == 4) {
$tabelle->writeFormula($i,$j,'=C'.($i+1).'-D'.($i+1));
}
else {
$tabelle->write($i,$j,$feld);
}
}
else {
$tmp =& $format;
if ($j > 0) {
$tmp =& $ausrichtung_r;
}
$tabelle->write($i,$j,$feld,$tmp);
}
}
}
$mappe->close();
Nach den beiden "foreach" hab ich ehrlich gesagt keine Ahnung mehr wie ich das machen soll.
Für Hilfe wäre ich sehr dankbar. :-)
BTW: der jetzige Code zum füllen ist nur zum testen der grundsätzlichen funktion des exports