Hello World mit Office Automation

In diesem Blog wollte ich mich ja u.a. mit dem Thema OpenXML auseinandersetzen. Was ist denn eigentlich OpenXML? OpenXML ist das Format in dem Office-Dokumente standardmäßig seit Office 2007 speichert werden (z.B. “.docx”- oder “.xlsx”). Bei diesem Format handelt es sich vereinfacht gesagt um eine Sammlung von XML-Dateien, die zusätzlich noch gezippt sind. Das können Sie selber relativ einfach ausprobieren in dem Sie die Extension einer “.docx”-Datei in “.zip” ändern und anschließend diese Datei mit einem Zip-Tool entpacken.

Früher waren Microsoft Office Dokumente (“.doc”- oder “.xls”-Dateien) in einem recht unhandlichen Binär-Format gespeichert. Dadurch konnte man Dokumente per Programmcode (wenn man nicht auf die Dienste von Drittanbietern zurückgreifen wollte) eigentlich nur mit Hilfe der sogenannten Office-Automation erstellen. Wie das ging bzw. immer noch geht, werde ich Ihnen im nun folgenden Beispiel „HelloWorldAutomation“ zeigen. „Wieso denn eigentlich Automation? Was bedeutet das genau?“ Falls Sie es nicht sowieso schon wissen, dann werden Sie es jetzt direkt sehen. Und Sie werden später dann auch noch sehen, dass es nicht das Gelbe vom Ei ist. Insbesondere dann, wenn man Office-Dokumente in einem Server-Prozess zusammenbauen will. Dieses Beispiel hat also im Wesentlichen einen sogenannten „Educational Purpose“ (wenn das mal nicht neudeutsch ist!) und dient lediglich dazu, dass Sie die Vorteile des in einem späteren Post folgenden „Hello-World“-Beispiels (auf OpenXML-Basis) noch besser zu würdigen wissen.

So: Wir machen das jetzt mal Schritt für Schritt zusammen!

Schritt 1: Starten Sie Visual Studio (hier gezeigt für VS 2010 geht aber genauso mit VS 2012).

Schritt 2: Legen Sie ein neues Projekt an. Wählen Sie unter Visual C# die Vorlage „Konsolenanwendung“ aus und vergeben Sie im unteren Bereich den Namen „HelloWorldAutomation“.

Beispiel_1_Bild1

Schritt 3: Wählen Sie im Projektmappen-Explorer den Ordner Verweise aus. Anschließend mit rechter Maustaste „Verweis hinzufügen“ auswählen. Dann bitte „Microsoft.Office.Interop.Word, Version 14.0.0.0“ auswählen, wenn Sie Office 2010 installiert haben. Wählen Sie „Microsoft.Office.Interop.Word, Version 12.0.0.0“ aus, wenn Sie Office 2007 installiert haben. Anschließend mit OK bestätigen.

Beispiel_1_Bild2

Schritt 4: Klicken Sie im Projektmappen-Explorer auf  „Program.cs“ und tippen Sie im Editor den in der folgenden Abbildung dargestellten Quelltext ein.

Beispiel_1_Bild3

Schritt 5. Speichern Sie das Projekt und starten Sie die Anwendung z.B. mit F5. Wenn Sie alles richtig gemacht haben, sollte automatisch Word gestartet werden und ein Dokument angezeigt werden, das als einzigen Text „Hello World“ enthält.

Beispiel_1_Bild4

Glückwunsch. Damit haben Sie Ihr erstes Word-Dokument per Programmcode erzeugt und angezeigt.

So jetzt wollen wir uns mal anschauen, was wir da eigentlich verbrochen haben. Wenn Sie sich den Quellcode mal etwas genauer ansehen, werden Sie feststellen, dass alles damit beginnt, dass wir eine neue Instanz der Klasse Word.Application erstellen. Übersetzt heißt das: Wir starten mit unserem kleinen Programm zunächst einmal Word. Damit das überhaupt funktioniert benötigen wir bereits den Verweis auf  „Microsoft.Office.Interop.Word, Version 14(12).0.0.0“. In den nächsten beiden Zeilen machen wir Word sichtbar und aktivieren es. Mit der darauf folgenden Zeile weisen wir Word an ein neues Dokument anzulegen und erstellen anschließend mit der letzten Zeile den Text „Hello World“. Wir machen also letzten Endes nichts anderes als eine Fernsteuerung (Automation) von Word. Das klingt einfach. Ist es auch! Ist es aber auch gut? Warum es leider nicht gut ist, werde ich im nächsten Post diskutieren!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s