Wie dem einen oder anderen ja vielleicht bekannt ist, kann man die ganzen Office-Anwendungen von Microsoft ja aus vielen Programmiersprachen fernsteuern. Dazu gibt es eine COM-Schnittstelle (leider :() Die ist zwar nicht gerade modern oder praktisch, aber sie funktioniert relativ gut.
Theoretisch geht das auch mit .NET 2.0, praktisch gesehen möchte man es aber erst mit .NET 4.0 probieren: Die Funktionen von Office nehmen oft wahnsinnig viele Parameter (15 sind da keine Seltenheit), und vor .NET 4.0 gab es keine optionalen Parameter, daher musste man für alles, was man nicht benutzen wollte Type.Missing angeben. Das war natürlich extrem unpraktisch. Mit dem neuen .NET ist Type.Missing jetzt der Standard-Wert der optionalen Parameter, und das ganze ist deutlich benutzbarer geworden.
Ich hatte mir zu Ziel gesetzt einen kleinen Serienbrief-Generator in C# zu schreiben. Ich weiß, Word hat so eine Funktion schon eingebaut, aber die Daten für die Briefe sollten automatisch generiert werden, und es hat mich auch einfach interessiert 🙂 Die Briefe basieren auf einem Template, was einfach ein normales Word-Dokument ist, das Platzhalter enthält. (Die Platzhalter sind auch einfach nur Text, keine Magie dahinter…) Diese Platzhalter werden durch ein einfaches Suchen&Ersetzen umgewandelt, und danach wird das Dokument ausgedruckt. Funktioniert auch recht gut, aber es gibt ein paar seltsame Dinge, auf die ich kurz eingehen will: