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)