Открытие и добавление текста в документе (Open XML SDK)How to: Open and add text to a word processing document (Open XML SDK)

В этом разделе показано, как использовать классы в Пакет Open XML SDK 2.5 для Office, чтобы программными средствами открыть документ Word и добавить в него текст.This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically open and add text to a Word processing document.

Для компиляции кода, представленного в этом разделе, требуются следующие директивы сборки.The following assembly directives are required to compile the code in this topic.

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

Открытие документа и добавление в него текстаHow to Open and Add Text to a Document

Пакет SDK 2.5 Open XML помогает создать структуру и содержимое документа Word с помощью строго типизированных классов, которые соответствуют элементам WordprocessingML. В этом разделе показано, как использовать классы в Пакет SDK 2.5 Open XML, чтобы открыть документ Word и добавить в него текст. Кроме того, здесь представлена базовая структура документа WordprocessingML, связанные XML-элементы и соответствующие классы пакета Open XML SDK.The Open XML SDK 2.5 helps you create Word processing document structure and content using strongly-typed classes that correspond to WordprocessingML elements. This topic shows how to use the classes in the Open XML SDK 2.5 to open a Word processing document and add text to it. In addition, this topic introduces the basic document structure of a WordprocessingML document, the associated XML elements, and their corresponding Open XML SDK classes.


Создание объекта WordprocessingDocumentCreate a WordprocessingDocument Object

В пакете Open XML SDK класс WordprocessingDocument представляет пакет документа Word. Чтобы открыть документ Word и работать с ним, создайте экземпляр класса WordprocessingDocument из документа. После создания экземпляра вы сможете получить доступ к основной части документа, содержащей текст. Текст в основной части документа представляется в пакете в виде XML с помощью разметки WordprocessingML.In the Open XML SDK, the WordprocessingDocument class represents a Word document package. To open and work with a Word document, create an instance of the WordprocessingDocument class from the document. When you create the instance from the document, you can then obtain access to the main document part that contains the text of the document. The text in the main document part is represented in the package as XML using WordprocessingML markup.

Чтобы создать экземпляр касса из документа, необходимо вызвать один из методов Open.To create the class instance from the document you call one of the Open methods. Доступно несколько методов с разными подписями.Several are provided, each with a different signature. В примере кода из этой статьи используется метод Open(String, Boolean) с подписью и двумя обязательными параметрами.The sample code in this topic uses the Open(String, Boolean) method with a signature that requires two parameters. Первый параметр — это строка полного пути, представляющая открываемый документ.The first parameter takes a full path string that represents the document to open. Второй параметр — это значение true или false, которое указывает, будет ли файл открыт для редактирования.The second parameter is either true or false and represents whether you want the file to be opened for editing. Если этот параметр имеет значение false, любые изменения, внесенные в документ, не будут сохранены.Changes you make to the document will not be saved if this parameter is false.

В следующем примере кода вызывается метод Open.The following code example calls the Open method.

    // 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)

После открытия пакета документа Word вы можете добавить текст в основную часть документа. Для доступа к тексту основной части документа назначьте ссылку на существующий основной текст, как показано в следующем примере кода.When you have opened the Word document package, you can add text to the main document part. To access the body of the main document part, assign a reference to the existing document body, as shown in the following code example.

    // 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

Структура документа WordProcessingMLStructure of a WordProcessingML Document

Базовая структура документа WordProcessingML состоит из элементов document и body, за которыми следует один или несколько элементов уровня блока, например p, представляющий абзац. Абзац состоит из одного или нескольких элементов r. r представляет прогон областью текста с общим набором свойств, например форматированием. Прогон содержит один или несколько элементов t. t содержит фрагмент текста. В следующем примере кода показана разметка WordprocessingML для документа с текстом "Example".The basic document structure of a WordProcessingML document consists of the document and body elements, followed by one or more block level elements such as p, which represents a paragraph. A paragraph contains one or more r elements. The r stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more t elements. The t element contains a range of text. The following code example shows the WordprocessingML markup for a document that contains the text "Example text."

    <w:document xmlns:w="http://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>

С помощью Пакет SDK 2.5 Open XML можно создать структуру и содержимое документа, использующие строго типизированные классы, соответствующие элементам WordprocessingML. Эти классы можно найти в пространстве имен DocumentFormat.OpenXml.Wordprocessing . В следующей таблице перечислены имена классов, соответствующие элементам document, body, p, r и t.Using the Open XML SDK 2.5, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You will find these classes in the DocumentFormat.OpenXml.Wordprocessing namespace. The following table lists the class names of the classes that correspond to the document, body, p, r, and t elements.

Элемент WordprocessingMLWordprocessingML Element Класс Open XML SDK 2.5Open XML SDK 2.5 Class ОписаниеDescription
documentdocument DocumentDocument Корневой элемент основной части документа.The root element for the main document part.
bodybody BodyBody Контейнер для структур уровня блока, таких как абзацы, аннотации, и других, указанных в стандарте ISO/IEC 29500.The container for the block level structures such as paragraphs, tables, annotations, and others specified in the ISO/IEC 29500 specification.
pp ParagraphParagraph Абзац.A paragraph.
rr RunRun Прогон.A run.
tt TextText Диапазон текста.A range of text.

Создание разметки WordprocessingML для добавления текстаGenerate the WordprocessingML Markup to Add the Text

После получения доступа к тексту основной части документа вы можете добавить текст в документ. Для этого добавьте экземпляры классов Paragraph, Run и Text. При этом будет создана необходимая разметка WordprocessingML. Следующий пример кода добавляет абзац, прогон и текст.When you have access to the body of the main document part, add text by adding instances of the Paragraph, Run, and Text classes. This generates the required WordprocessingML markup. The following code example adds the paragraph, run and text.

    // 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))

Пример кодаSample Code

Пример метода OpenAndAddTextToWordDocument, показанный здесь, можно использовать для открытия документа Word и добавления текста с помощью пакета Open XML SDK. Для вызова этого метода передайте полный путь к файлу в качестве первого параметра и текст в качестве второго параметра. Например, следующий пример кода открывает файл Letter.docx в папке "Общие документы" и добавляет в него текст.The example OpenAndAddTextToWordDocument method shown here can be used to open a Word document and append some text using the Open XML SDK. To call this method, pass a full path filename as the first parameter and the text to add as the second. For example, the following code example opens the Letter.docx file in the Public Documents folder and adds text to it.

    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)

Далее представлен полный пример кода на языках C# и Visual Basic.Following is the complete sample code in both C# and Visual Basic.

Обратите внимание, что метод OpenAndAddTextToWordDocument не содержит явный вызов метода Save. Это связано с тем, что функция автосохранения по умолчанию включена, и она не была отключена в вызове метода Open с помощью OpenSettings.Notice that the OpenAndAddTextToWordDocument method does not include an explicit call to Save. That is because the AutoSave feature is on by default and has not been disabled in the call to the Open method through use of OpenSettings.

    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

См. такжеSee also

Другие ресурсыOther resources

Справочник по библиотеке классов пакета SDK 2.5 Open XMLOpen XML SDK 2.5 class library reference