Freigeben über


Erstellen eines Textverarbeitungsdokuments durch Angeben eines Dateinamens

In diesem Thema wird gezeigt, wie Sie die Klassen im Open XML SDK für Office zum programmgesteuerten Erstellen eines Textverarbeitungsdokuments verwenden.


Erstellen eines WordprocessingDocument-Objekts

Im Open XML SDK stellt die WordprocessingDocument -Klasse ein Word-Dokumentpaket dar. Zum Erstellen eines Word-Dokuments müssen Sie eine Instanz der WordprocessingDocument-Klasse erstellen und sie mit Teilen auffüllen. Das Dokument muss mindestens einen Hauptdokumentteil aufweisen, der als Container für den Haupttext des Dokuments dient. Der Text wird im Paket mithilfe des WordprocessingML-Markups als XML dargestellt.

Sie rufen zum Erstellen der Klasseninstanz die Create(String, WordprocessingDocumentType)-Methode auf. Es werden mehrere Create()-Methoden bereitgestellt, jede mit einer anderen Signatur. Der Beispielcode in diesem Thema verwendet die Create-Methode mit einer Signatur, die zwei Parameter erfordert. Der erste Parameter erfordert eine vollständige Pfadzeichenfolge, die das Dokument darstellt, das Sie erstellen möchten. Der zweite Parameter ist ein Member der WordprocessingDocumentType-Enumeration. Dieser Parameter steht für den Typ des Dokuments. Es gibt beispielsweise einen anderen Member der WordProcessingDocumentType-Enumeration für jedes Dokument, jede Vorlage und jedes Makro für die unterschiedlichen Dokumente und Vorlagen.

Hinweis

[!HINWEIS] Wählen Sie den entsprechenden WordProcessingDocumentType sorgfältig aus, und stellen Sie sicher, dass die dauerhaft gespeicherte Datei über die ordnungsgemäße passende Dateinamenerweiterung verfügt. Wenn wordProcessingDocumentType> nicht mit der Dateierweiterung übereinstimmt, tritt beim Öffnen der Datei in Microsoft Word ein Fehler auf.

Der Code, der die Create-Methode aufruft, ist Teil einer using-Anweisung, auf die ein Block in Klammern folgt (siehe das folgende Codebeispiel).

    using (WordprocessingDocument wordDocument =
        WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
    {
        // Insert other code here. 
    }

Die using-Anweisung ist eine empfohlene Alternative zur herkömmlichen Reihenfolge ".Create, .Save, .Close". Sie stellt sicher, dass die Dispose()-Methode (vom Open XML SDK verwendete interne Methode zum Bereinigen von Ressourcen) bei Erreichen der schließenden Klammer automatisch aufgerufen wird. Der auf die using-Anweisung folgende Block richtet einen Bereich für das Objekt ein, das in der using-Anweisung erstellt oder benannt wird, in diesem Fall wordDocument. Da die WordprocessingDocument-Klasse im Open XML SDK das Objekt automatisch als Teil seiner System.IDisposable-Implementierung speichert und schließt und Dispose automatisch aufgerufen wird, wenn Sie den Block in Klammern verlassen, müssen Save und Close nicht explizit aufgerufen werden, solange Sie using verwenden.

Sobald Sie das Word-Dokumentpaket erstellt haben, können Sie ihm Teile hinzufügen. Rufen Sie zum Hinzufügen des Hauptdokumentteils die AddMainDocumentPart() -Methode der WordprocessingDocument-Klasse auf. Im Anschluss können Sie die Dokumentstruktur und Text hinzufügen.


Struktur eines WordProcessingML-Dokuments

Die grundlegende Struktur eines WordProcessingML-Dokuments besteht aus den document- und body-Elementen, gefolgt von einem oder mehreren Block-Level-Elementen wie p, das für einen Absatz steht. Ein Absatz enthält ein oder mehrere r-Elemente. r steht für ausführen und meint einen Textbereich mit gemeinsamen Eigenschaften wie Formatierung. Eine Ausführung besteht aus einem oder mehreren t-Elementen. Das t-Element enthält einen Textbereich. Das folgende Codebeispiel zeigt das WordprocessingML-Markup für ein Dokument, das den Text "Beispieltext" enthält.

    <w:document xmlns:w="https://schemas.openxmlformats.org/wordprocessingml/2006/main">
      <w:body>
        <w:p>
          <w:r>
            <w:t>Example text.</w:t>
          </w:r>
        </w:p>
      </w:body>
    </w:document>

Mit dem Open XML SDK können Sie Dokumentstrukturen und -inhalte mit stark typisierten Klassen erstellen, die WordprocessingML-Elementen entsprechen. Diese Klassen sind im DocumentFormat.OpenXml.Wordprocessing -Namespace enthalten. Die folgende Tabelle enthält die Namen der Klassen, die den Elementen document, body, p, r und t entsprechen.

WordprocessingML-Element Open XML SDK-Klasse Beschreibung
document Document Das Stammelement des Hauptdokumentteils.
Text Body Der Container für die Strukturen auf Blockebene, z. B. Absätze, Tabellen, Anmerkungen und andere, die in der Spezifikation ISO/IEC 29500 angegeben sind.
p Paragraph Ein Absatz.
r Run Ein Lauf.
t Text Ein Textbereich.

Weitere Informationen zur Gesamtstruktur der Teile und Elemente eines WordprocessingML-Dokuments finden Sie unter Struktur eines WordprocessingML-Dokuments.


Generieren des WordprocessingML-Markups

Zum Erstellen der grundlegenden Dokumentstruktur mithilfe des Open XML SDK müssen Sie die Document-Klasse instanziieren, sie der Document-Eigenschaft des Hauptdokumentteils zuweisen und anschließend Instanzen der Klassen Body, Paragraph, Run und Text hinzufügen. Dies wird in der Beispielcodeauflistung gezeigt und dient zum Generieren des benötigten WordprocessingML-Markups. Wenngleich im Code der Beispielcodeauflistung die AppendChild-Methode jeder Klasse aufgerufen wird, können Sie mitunter den Code verkürzen und lesbarer gestalten, indem Sie die im folgenden Codebeispiel verwendete Technik befolgen.

    mainPart.Document = new Document(
       new Body(
          new Paragraph(
             new Run(
                new Text("Create text in body - CreateWordprocessingDocument")))));

Beispielcode

Die CreateWordprocessingDocument-Methode kann verwendet werden, um ein einfaches Word Dokument zu erstellen. Sie rufen sie auf, indem Sie einen vollständigen Pfad als einzigen Parameter übergeben. Im folgenden Codebeispiel wird die Invoice.docx-Datei im Ordner Öffentliche Dokumente erstellt.

    CreateWordprocessingDocument(@"c:\Users\Public\Documents\Invoice.docx");

Die Dateinamenerweiterung DOCX entspricht dem Typ der Datei, der vom WordprocessingDocumentType.Document-Parameter im Aufruf der Create-Methode angegeben ist.

Nachstehend ist der vollständige Beispielcode in C# und Visual Basic aufgeführt.


using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

CreateWordprocessingDocument(args[0]);

static void CreateWordprocessingDocument(string filepath)
{
    // Create a document by supplying the filepath. 
    using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
    {
        // Add a main document part. 
        MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();

        // Create the document structure and add some text.
        mainPart.Document = new Document();
        Body body = mainPart.Document.AppendChild(new Body());
        Paragraph para = body.AppendChild(new Paragraph());
        Run run = para.AppendChild(new Run());
        run.AppendChild(new Text("Create text in body - CreateWordprocessingDocument"));
    }
}

Siehe auch