phpbar.de logo

Mailinglisten-Archive

[php] Erzeugen von RFT-Datei / WordDatei mittels PHP

[php] Erzeugen von RFT-Datei / WordDatei mittels PHP

Michael Detambel detambel at bfw-oberhausen.de
Don Nov 10 11:24:14 CET 2005


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