IPS-Daten nach MS-Word schreiben.

Hallo alle zusammen,

seit dem hier habe ich das auf dem Schreibtisch liegen.

Eine Anbindung an MS-Word. Mit dieser Funktion habe ich die Möglichkeit Daten an MS-Word zu senden. Das ganze funktioniert über Textmarken (engl.: Bookmarks) in Word. Somit hat man die Möglichkeit einen Musterbrief/Dokument mit Textmarken zu erstellen die über IPS mit Daten gefüllt werden. Im Anhang ist eine Musterdatei passend zum Beispiel.

Hier nun die Funktion:


function write_to_Word($template, $filename, $bookmarks)
			{

				// Word VARIANTs erzeugen
				$vIndex = new VARIANT (0,VT_I2);  // Index für Bookmarks
				$vWhat = new VARIANT (-1,VT_I2);  // What (Bookmarktyp: GoToBookmark = -1)
				$vOptional = new VARIANT ();
				$vName = new VARIANT('', VT_BSTR);

			   //Einbinden der COM-Klasse für Word
				$word = new COM("word.application") or die("Did not connect");

				//Kontrolle der Datei
				if (file_exists($template))
				{
					//öffnen einer bestehenden Word-Vorlage
   	         $word->Documents->Open($template);
				}
				else
				{
					//Sonst -> Meldung
					echo "The file $template does not exist";
					exit;
				}

				foreach($bookmarks as $key => $value)
				{
				   //übergeben des Bookmark
					$vName = $key;
					//anspringen des Bookmark
					$word->Selection->Goto($vWhat, $vOptional, $vOptional, $vName);
					//übergeben des Wertes
					$word->Selection->TypeText($value);
				}

				//Kontrolle der Datei
				if (file_exists($filename))
				{
					//Speichern der bestehenden Datei
					$word->Documents[1]->Save($filename);
				}
				else
				{
				   //Speichern der neuen Datei
					$word->Documents[1]->SaveAs($filename);
				}

				//Word schließen
				$word->Quit();

				//Objekt freigeben
				$word = null;
			}

Und nun die Einbindung für die im Anhang mitgelieferte Musterdatei:


$template = IPS_GetKernelDir()."meldungen\\ereignisse\\IPS_Musterbrief.dot"; // bitte anpassen
$filename = IPS_GetKernelDir()."meldungen\\ereignisse\\Testdokument.doc"; // bitte anpassen

// Name der Textmarke => Inhalt
$bookmarks = array('bm_nachname' => 'Mustermann',
                   'bm_vorname' => 'Max',
                   'bm_strasse' => 'Lulie-Gasse 2',
                   'bm_ort' => '90995 Lummerland',
                   'bm_anrede' => 'Mustermann',
                   'bm_preis' => '1234');

write_to_Word($template, $filename, $bookmarks);

IPS_Musterbrief.zip (6.47 KB)