Freigeben über


Anleitung: Öffnen eines Textverarbeitungsdokuments und Hinzufügen von Text

Letzte Änderung: Donnerstag, 14. Oktober 2010

Gilt für: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010

Inhalt dieses Artikels
Öffnen eines Dokuments und Hinzufügen von Text
Erstellen eines WordprocessingDocument-Objekts
Struktur eines WordProcessingML-Dokuments
Generieren des WordprocessingML-Markups zum Hinzufügen von Text
Beispielcode

In diesem Thema wird erklärt, wie Sie mithilfe der Klassen im Open XML SDK 2.0 für Microsoft Office programmgesteuert ein Textverarbeitungsdokument öffnen und ihm Text hinzufügen können.

Die folgenden Assemblydirektiven sind zum Kompilieren des Codes in diesem Thema erforderlich.

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

Öffnen eines Dokuments und Hinzufügen von Text

Mithilfe des Open XML SDK 2.0 können Sie die Struktur eines Textverarbeitungsdokuments und Inhalte erstellen, indem Sie stark typisierte Klassen verwenden, die WordprocessingML-Elementen entsprechen. In diesem Thema wird erklärt, wie Sie mithilfe der Klassen im Open XML SDK 2.0 ein Textverarbeitungsdokument öffnen und ihm Text hinzufügen können. Darüber hinaus werden in diesem Thema die grundlegende Dokumentstruktur eines WordprocessingML-Dokuments, die dazugehörigen XML-Elemente und ihre entsprechenden Open XML SDK-Klassen vorgestellt.

Erstellen eines WordprocessingDocument-Objekts

Im Open XML SDK stellt die WordprocessingDocument-Klasse ein Word-Dokumentpaket dar. Zum Öffnen und Bearbeiten eines Word-Dokuments müssen Sie anhand des Dokuments eine Instanz der WordprocessingDocument-Klasse erstellen. Wenn Sie die Instanz anhand des Dokuments erstellen, können Sie Zugriff auf den Hauptdokumentteil erhalten, der den Text des Dokuments enthält. Der Text im Hauptdokumentteil wird im Paket mithilfe des WordprocessingML-Markups als XML dargestellt.

Zum Erstellen der Klasseninstanz anhand des Dokuments rufen Sie eine der Open-Methoden auf, von denen mehrere mit einer jeweils anderen Signatur bereitgestellt werden. Der Beispielcode in diesem Thema arbeitet mit der Open(String, Boolean)-Methode mit einer Signatur, die zwei Parameter erfordert. Der erste Parameter arbeitet mit einer vollständigen Pfadzeichenfolge, die das Dokument darstellt, das Sie öffnen möchten. Der zweite Parameter ist entweder true oder false und bestimmt, ob die Datei zum Bearbeiten geöffnet werden soll. Ist dieser Parameter auf false festgelegt, werden Ihre Änderungen am Dokument nicht gespeichert.

Im folgenden Codebeispiel wird die Open-Methode aufgerufen.

// Open a WordprocessingDocument for editing using the filepath.
WordprocessingDocument wordprocessingDocument = 
    WordprocessingDocument.Open(filepath, true);
' Open a WordprocessingDocument for editing using the filepath.
Dim wordprocessingDocument As WordprocessingDocument = WordprocessingDocument.Open(filepath, True)

Nach Öffnen des Word-Dokumentpakets können Sie dem Hauptdokumentteil Text hinzufügen. Um auf den Text des Hauptdokumentteils zugreifen zu können, weisen Sie einen Verweis auf den vorhandenen Dokumenttext zu (siehe das folgende Codebeispiel).

// Assign a reference to the existing document body.
Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
' Assign a reference to the existing document body.
Dim body As Body = wordprocessingDocument.MainDocumentPart.Document.Body

Struktur eines WordProcessingML-Dokuments

Die Grunddokumentstruktur eines WordProcessingML-Dokuments besteht aus den Elementen document und body, gefolgt von einem oder mehreren Elementen auf Blockebene, z. B. p (Paragraph), das einen Absatz darstellt. Ein Absatz besteht aus einem oder mehreren r-Elementen. r steht für "run" (Lauf), wobei es sich um einen Textbereich mit gemeinsamen Eigenschaften, z. B. Formatierung, handelt. Ein Lauf enthält ein oder mehrere t-Elemente. Das t-Element enthält einen Textbereich. Das folgende Codebeispiel zeigt das WordprocessingML-Markup eines Dokuments, das den Text "Example text" 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>

Mithilfe des Open XML SDK 2.0 können Sie eine Dokumentstruktur und Inhalte erstellen, indem Sie stark typisierte Klassen verwenden, 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 2.0-Klasse

Beschreibung

document

Document

Das Stammelement des Hauptdokumentteils.

body

Body

Der Container für die Strukturen auf Blockebene, z. B. Absätze, Tabellen und Anmerkungen, und andere Elemente, die in der Spezifikation ISO/IEC 29500 angegeben sind.

p

Paragraph

Ein Absatz.

r

Run

Ein Lauf.

t

Text

Ein Textbereich.

Generieren des WordprocessingML-Markups zum Hinzufügen von Text

Wenn Sie Zugriff auf den Text des Hauptdokumentteils haben, können Sie Text hinzufügen, indem Sie Instanzen der Klassen Paragraph, Run und Text hinzufügen. Dadurch wird das erforderliche WordprocessingML-Markup generiert. Im folgenden Codebeispiel werden Absatz, Lauf und Text hinzugefügt.

// Add new text.
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new Text(txt));
' Add new text.
Dim para As Paragraph = body.AppendChild(New Paragraph())
Dim run As Run = para.AppendChild(New Run())
run.AppendChild(New Text(txt))

Beispielcode

Die in diesem Beispiel gezeigte OpenAndAddTextToWordDocument-Methode dient zum Öffnen eines Word-Dokuments und Hinzufügen von Text mithilfe des Open XML SDK. Übergeben Sie zum Aufrufen dieser Methode einen vollständigen Pfad- und Dateinamen als ersten Parameter und den hinzuzufügenden Text als zweiten Parameter. Im folgenden Codebeispiel wird die Datei "Letter.docx" im Ordner "Public Documents" geöffnet, der Text hinzugefügt wird.

string strDoc = @"C:\Users\Public\Documents\Letter.docx";
string strTxt = "Append text in body - OpenAndAddTextToWordDocument";
OpenAndAddTextToWordDocument(strDoc, strTxt);
Dim strDoc As String = "C:\Users\Public\Documents\Letter.docx"
Dim strTxt As String = "Append text in body - OpenAndAddTextToWordDocument"
OpenAndAddTextToWordDocument(strDoc, strTxt)

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

Beachten Sie, dass die OpenAndAddTextToWordDocument-Methode keinen expliziten Aufruf von Save vorsieht. Der Grund ist, dass die AutoSave-Funktion standardmäßig aktiviert ist und im Aufruf der Open-Methode über OpenSettings nicht deaktiviert wurde.

public static void OpenAndAddTextToWordDocument(string filepath, string txt)
{   
    // Open a WordprocessingDocument for editing using the filepath.
    WordprocessingDocument wordprocessingDocument = 
        WordprocessingDocument.Open(filepath, true);

    // Assign a reference to the existing document body.
    Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
    
    // Add new text.
    Paragraph para = body.AppendChild(new Paragraph());
    Run run = para.AppendChild(new Run());
    run.AppendChild(new Text(txt));
    
    // Close the handle explicitly.
    wordprocessingDocument.Close();
}
Public Sub OpenAndAddTextToWordDocument(ByVal filepath As String, ByVal txt As String)
    ' Open a WordprocessingDocument for editing using the filepath.
    Dim wordprocessingDocument As WordprocessingDocument = _
        wordprocessingDocument.Open(filepath, True)

    ' Assign a reference to the existing document body. 
    Dim body As Body = wordprocessingDocument.MainDocumentPart.Document.Body

    ' Add new text.
    Dim para As Paragraph = body.AppendChild(New Paragraph)
    Dim run As Run = para.AppendChild(New Run)
    run.AppendChild(New Text(txt))

    ' Close the handle explicitly.
    wordprocessingDocument.Close()
End Sub

Siehe auch

Referenz

Class Library Reference