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