Mailinglisten-Archive |
Michael Vogel schrieb: > Für eine Projekt sollen Formularfelder innerhalb eines Word-Dokumentes (Doc > oder RTF) durch Datenbankeinträge gefüllt werden. > Das Word-Dokument inkl. Der Formularfelder sind fertig und nun geht es daran > die Daten aus einer MySQL-Datenbank zu holen (klappt alles bestens) und die > Formularfelder innerhalb der WordDokumentes zu setzen? Hallo Michael, schlimm abgewatscht worden? Aber wenn es Word-Format sein soll und VBA nicht zur Verfügung steht, hilft folgendes Simpel-Verfahten: 1. Erstelle (mit Word) ein Dokument und setze an die gewünschten Stellen Platzhalter ein (z. B. *Ort*). 2. Speichere im RTF-Format ab (= reines ASCII). Wenn das Ding auf einem Webserver liegt und nicht per Browser ausgelesen werden soll, hänge die Endung *.php dran und setze den gesamten Inhalt der Datei in einen PHP-Kommentar. Das sieht dann so aus: (...) {\loch\f4\fs22\lang1031\i0\b0 *plz* *ort*} \par \pard\plain (...). 3. Ersetze im PHP-Skript die Platzhalter durch die gewünschten Daten (ggf. PHP-Kommentar überlesen). Code-Schnipsel: // Word-Dokument (RTF, aber als .DOC kaschiert) aufbauen und als Anhang verschicken /* ... */ $brief = file_get_contents('20 Res.E-Heim.rtf.php'); // Template öffnen // Template ist gegen direktes Lesen mit php-Tags geschützt $brief = str_replace('<?php /*','',$brief); $brief = str_replace('*/?>','',$brief); $brief = str_replace('*tagesdatum*',strftime( "%d.%m.%Y" ),$brief); * ... */ $brief = str_replace('*plz*',$plz,$brief); $brief = str_replace('*ort*',$ort,$brief); // Datei speichern (mit Endung .DOC) $out_file = '20 Res.E-Heim.doc'; $file_name = '20 Res.E-Heim.doc'; $fp = fopen('tmp/'.$file_name,'w'); if(!$fp) { trigger_error('file_put_contents cannot write in file.', E_USER_ERROR); return; } fputs($fp, $brief); fclose($fp); 4. Fertig! Das einzige, woran der Anwender merkt, dass es kein .DOC-Format ist, ist die Konvertierungsabfrage (falls er die überhaupt eingestellt hat). Mfg Michael Detambel
php::bar PHP Wiki - Listenarchive