12.05.2006, 14:18 Uhr

Office-Dokumente ­ anlegen und auswerten

Das XML-Format des kommenden Office 2007 ist in erster Linie für Entwickler interessant, bietet es ihnen doch vollkommen neue Möglichkeiten, Dokumente zu erstellen oder in einen unternehmensweiten Workflow zu integrieren.
Bild1: Struktur einer Word-2007-Datei.
Eckehard Pfeifer ist Mathematiker und freiberuflicher Entwickler. Als Microsoft Certified Application Developer .NET hat er sich auf das Office-Umfeld spezialisiert und zu diesem Thema ein Buch veröffentlicht, das bei Microsoft Press erschienen ist.
Mit dem kommenden Microsoft Office 2007 wird eine Entwicklung vollendet, die bereits mit Office XP eingeleitet wurde, der Datenaustausch zwischen Anwendung auf der Grundlage von XML als einheitlichem und offenem Format. XML und Office ist kein neues Thema. Bereits Excel 2002 konnte so genannte XML-Kalkulationstabellen abspeichern und wieder einlesen. Dabei handelte es sich um eine Eins-zu-Eins-Abbildung von Arbeitsmappen ohne Diagramme, eingebettete Objekte und VBA-Projekte. Der verwendete XML-Dialekt SpreadsheetML gestattet es darüber hinaus, Spreadsheet-Webkomponenten als interaktive ActiveX-Komponenten auf Webseiten und Windows-Formularen nahezu so agieren zu lassen, als ob Excel selbst im Spiele wäre. Mit der Version 2003 erhielt auch Word die Möglichkeit der Speicherung und des Lesens von XML-Dokumenten. Der verwendete XML-Dialekt heisst WordProcessingML und erlaubt ganz neue Möglichkeiten des Dokumenten-Managements. Mit Office 2007 wird sich auch PowerPoint in die Liste einreihen: Der Dialekt heisst PresentationML. Die Möglichkeiten von SpreadsheetML und WordProcessingML haben übrigens nur sehr wenig mit dem zu tun, was mit Word und Excel 2003 ebenfalls auf XML-Basis erledigt werden kann: Das Hinzufügen von Daten auf der Basis zugeordneter Schemata (XSD) sowie die Transformation dieser Daten in andere Formate (Stichwort XSLT).Da eine Word-Datei im neuen OpenXML-Format gegenüber einer Excel-Arbeitsmappe bzw. einer PowerPoint-Präsentation einen relativ einfachen Aufbau besitzt, soll sie im Folgenden als Vertreter einer kommenden neuen Generation von Office-Dokumenten vorgestellt werden. (Bild1)
Vorteile durch XML-Formate
Den neuen XML-Formaten ist gemeinsam, dass die Dokumente aus einem «gezippten» Dateiarchiv bestehen. Unter Windows XP/Windows 2003 lassen sich solche Dokumente sehr schön in ihren Ordnerstrukturen untersuchen, indem sie vorübergehend die Dateiendung .Zip erhalten. Die Vorteile einer solchen Dateistruktur liegen auf der Hand: - Es sind keine Kenntnisse der proprietären Formate erforderlich. - Teile der Dateien lassen sich gezielt ansprechen, der Aufwand zum Informationsaustausch kann dadurch minimal gehalten werden. - Beschädigte Dateien lassen sich durch die Anwendungen zumindest im Detail wieder herstellen. - Der Dateiumfang kann «klein» gehalten werden. - Dateien können erstellt und bearbeitet werden, ohne dass die jeweilige Anwendung gestartet werden muss. Gerade im letzten Aspekt sollte für viele Entwicklungen ein nicht unerheblicher Vorteil liegen.
Komfort hat seinen Preis
Der neue Komfort hat allerdings seinen Preis, der darin besteht, dass der Umgang mit den Dokumenten für Entwickler mit etwas mehr Aufwand verbunden ist. Dieser Mehraufwand besteht aus zwei Aspekten: - Das Erzeugen Schema-gerechter Dokumente ist nur unter genauer Kenntnis des Aufbaus gültiger XML-Dokumente möglich und trotz lesbarer XML-Tags nicht unbedingt trivial. - Die «Verpackung» muss automatisiert werden. Das erfordert auch die genaue Kenntnis deren Struktur. Während der erste Schritt Kleinarbeit erforderlich macht, bei der vorliegende Dokumente und gegebenenfalls einmal erstellte Transformationsdateien helfen, wird der Entwickler (zumindest bei der aktuellen Beta-Version von Office 2007) durch das .NET-Framework 2.0 und einer ebenfalls noch im Beta-Stadium befindlichen Runtime-Komponente der WinFX-Programmierschnittstelle unterstützt.
Dokumentzugriff mit WinFX
Mit der offiziellen Freigabe von Office 2007 wird auch WinFX als Erweiterung von Windows XP und dem kommenden Windows Vista zur Verfügung stehen. Die WinFX Runtime Components 3.0 enthalten eine Assembly mit dem Namen WindowsBase.dll, die wiederum den Namespace System.IO um den System.IO.Packaging und eine Reihe von Klassen, die für den Zugriff auf Office 2007-Dokumente benutzt werden können, erweitert.
Ein erstes Beispiel in Visual Basic
Das folgende kleine Visual Basic-Beispiel steht als einfacher Vertreter für eine neue Generation an Programmen. Es zeigt, wie sich ein Word-Dokument aus Inhalten anlegen lässt, die zuvor in eine TextBox eingegeben wurden. Die Formatierung übernehmen die Formatvorlagen der Standard-Dokument-Vorlage (Normal.dotm). Damit in einem Visual Basic 2005 Projekt von den neuen Möglichkeiten Gebrauch gemacht werden kann, muss ein Verweis auf die WindowsBase-Assembly gesetzt werden. Sie befindet sich (zum gegenwärtigen Zeitpunkt) im Ordner Programme/Reference Assemblies/Microsoft/WinFX/v3.0. Damit lassen sich die folgenden Namespaces importieren Imports System.IO Imports System.IO.Packaging Imports System.Xml Auf einem Formular (oder einer Webseite) werden ein TextBox-Steuerelement (tbBody) und ein Button-Steuerelement (bnCreateDoc) platziert, die den «Datenfluss» steuern. Im Click-Event des Button wird ein neues Word-Dokument angelegt, wobei die Prozedur CreateWordDoc die eigentliche Arbeit leistet:
Private Sub Create(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnCreateDoc.Click CreateWordDoc("C:\myDoc.docx", tbBody.Text) End Sub
Was wieder einmal nach typischer Visual Basic-Programmierung aussieht, bedeutet in der Praxis etwas mehr Aufwand. Es müssen zwingend einige XML-Namespaces in lokalen Konstanten definiert werden:
Dim cstrNameSpaceW As String = "http://schemas.openxmlformats.org/wordprocessingml/2006/2/main" Dim cstrNameSpaceRel As String = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Dim cstrContentType As String = "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"
Diese sollten bis zum endgültigen Release von Office 2007 beobachtet werden, da sie sich bereits in den vergangenen Beta-Versionen verändert haben. Ein Blick in die Details aktueller Dokumente bringt etwas mehr Klarheit.
Der Inhalt der TextBox wird mit den regulären Klassen im System.Xml-Namespaces, die es bereits seit Jahren gibt, in ein XML-Dokument umgewandelt (Listing 1).Die endgültige «Verpackung» in ein Word-Dokument des neuen XML-Formats erledigt ein Objekt, welches aus der Klasse System.IO.Packaging.Package instanziert wird und über die Möglichkeiten verfügt, mit Hilfe der Methode CreatePart das erforderliche XML-Dokument an der richtigen Stelle (/word/document.xml) unterzubringen (Listing 2), sowie mit Hilfe der CreateRelationship-Methode die Datei .rels zu erzeugen und mit den entsprechenden Einträgen zu versorgen: (Listing 2)
Der Abschluss erfolgt mittels
paket.Flush()
paket.Close()
Nach dem Start des Projekts und der Eingabe von etwas Text in die TextBox sorgt ein Klick auf den Button dafür, dass ein durch Word 2007 les- und bearbeitbares Dokument entsteht. Der erste Schritt in eine spannende Zukunft ist getan.
Eckehard Pfeifer


Das könnte Sie auch interessieren