Hi Mitstreiter,
habe zur Zeit eine Moeglichkeit zur Verfuegung Daten aus einer MySQL DB manuell (per Mausklick) in eine EXCEL Tabelle zu uebertragen.
Was ich suche ist eine Moeglichkeit diese Uebertragung automatisch zum ersten eines jeden Monats erledigen zu lassen.
Bin fuer jede Hilfe empfaenglich und Dankbar
seeya
Che
schreib einfach ne HTML-Tabelle als .xsl.
Wenn du die Datei doppelklickst, wird sie automatisch von Excel importiert und du kannst sie als Excel-Datei speichern.
Skripts automatisch ausführen lassen kannst du mit Hilfe des Unix/Linux-Tools cron.
CAITS PowerCounter
11-03-2002, 00:54
Folgende Lösung basiert auf nem Tut das ich irgendwo mal im Web gefunden habe:
function xlsHeader() { // erzeugt einen Header, wie man ihn von Exceldateien gewohnt ist
return pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
}
function xlsFooter() { // erzeugt das Dateiende einer Exceltabelle
return pack("ss", 0x0A, 0x00);
}
function xlsWriteNumber($Row, $Col, $Value) { // schreibt einen numerischen Wert in die Tabelle
return pack("sssss", 0x203, 14, $Row, $Col, 0x0).pack("d", $Value);
}
function xlsWriteLabel($Row, $Col, $Value ) { // schreibt einen String in eine Tabellenzelle
$L = strlen($Value);
return pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L).$Value;
}
Diese vier Functions brauchst du, nun noch ein Praxisbeispiel:
function xls_export($id) { // bündelt die Funktionen zum kompletten Excelexport
$monat = date("mY");
$filename = $id."-".$monat.".xls";
$filepath = "/Logfiles/"; // Dateinamen und -pfad generieren
$fp = fopen($filepath.$filename,"w"); // Datei öffnen
$data = xlsHeader(); // Excel-Kopf schreiben
fputs($fp,$data);
$tbl_logs = $id."_logs"; // Table-Name zusammenbauen
$result = mysql_query("SELECT * FROM $tbl_logs"); // Logtabelle leechen
$r = 0; $data = "";
while($row=mysql_fetch_array($result)) { // jede Zeile einzeln in die Datei schreiben
for($i=0;$i<count($row); $i++) {
$value = $row[$i];
$data = xlsWriteLabel($r,$i,$value); // und zwar Eintrag für Eintrag
fputs($fp,$data); // und am Ende die komplette Zeile reinschicken
}
$r++;
}
$data = xlsFooter(); // Am Ende noch den Excelfooter erzeugen
fputs($fp,$data);
fclose($fp); // und die Datei schließen, fertig
return "Exceldatei für User $id erfolgreich gespeichert<br>";
}
Denke das ist genau das was du gesucht hast.
Gruß Carsten