Поделиться через


Создайте текстовый документ, указав имя файла

В этом разделе показано, как использовать классы в пакете SDK Open XML для Office для программного создания текстового документа.


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

В пакете SDK WordprocessingDocument Open XML класс представляет пакет документов Word. Чтобы создать документ Word, создайте экземпляр WordprocessingDocument класса и заполните его частями. Документ должен содержать как минимум основную часть документа, которая служит контейнером для текста документа. Текст представляется в этом пакете в виде XML-кода с использованием разметки WordprocessingML.

Чтобы создать экземпляр класса, вызовите Create(String, WordprocessingDocumentType) метод . Предоставляется несколько Create методов, каждый из которых имеет разную сигнатуру. В примере кода в этом разделе используется Create метод с сигнатурой, требующей двух параметров. В первый параметр передается строка с полным путем, которая представляет создаваемый документ. Второй параметр является членом перечисления WordprocessingDocumentType . Этот параметр представляет тип документа. Например, существует отдельный член перечисления WordProcessingDocumentType для каждого документа, шаблона и макроса с поддержкой различных документов и шаблонов.

Примечание.

Тщательно выберите соответствующий WordProcessingDocumentType файл и убедитесь, что сохраненный файл имеет правильное, соответствующее расширение файла. WordProcessingDocumentType Если файл не соответствует расширению файла, при открытии файла в Microsoft Word возникает ошибка.

Код, вызывающий Create метод, является частью using оператора, за которым следует блок в квадратных скобках, как показано в следующем примере кода.

using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
{

В версии 3.0.0+ Close() метод был удален в пользу использования инструкции using. Это гарантирует, что Dispose() метод автоматически вызывается при достижении закрывающей фигурной скобки. Блок, следующий за инструкцией using, создает область для объекта, создаваемого или именуемого в инструкции using. WordprocessingDocument Так как класс в пакете SDK open XML автоматически сохраняет и закрывает объект в рамках его IDisposable реализации, а так как Dispose() вызывается автоматически при выходе из блока, не нужно явно вызывать Save() или Dispose() до тех пор, пока вы используете инструкцию using .

После создания пакета документов Word в него можно добавлять части. Чтобы добавить main часть документа, вызовите AddMainDocumentPart метод WordprocessingDocument класса . После этого можно добавить структуру документа и текст.


Структура документа WordProcessingML

Базовая структура WordProcessingML документа состоит из document элементов и body , за которыми следует один или несколько элементов уровня блока, таких как p, который представляет абзац. Абзац содержит один или несколько r элементов. Представляет r собой область текста с общим набором свойств, таких как форматирование. Выполнение содержит один или несколько t элементов. Элемент t содержит диапазон текста. В следующем примере кода показана разметка WordprocessingML для документа, содержащего текст "Пример текста".

    <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 Open XML можно создавать структуру документа и содержимое с помощью строго типизированных классов, соответствующих WordprocessingML элементам. Эти классы находятся в пространстве имен. В следующей таблице перечислены имена классов, которые соответствуют documentэлементам , body, p, rи t .

Элемент WordprocessingML Класс пакета SDK Open XML Описание
<document/> Document Корневой элемент основной части документа.
<body/> Body Контейнер для структур уровня блокировки, таких как абзацы, таблицы, примечания и других элементов, описанных в спецификации ISO/IEC 29500.
<p/> Paragraph Абзац.
<r/> Run Прогон.
<t/> Text Диапазон текста.

Дополнительные сведения об общей структуре частей и элементов документа WordprocessingML см. в разделе Структура документа WordprocessingML.


Создание разметки WordprocessingML

Чтобы создать базовую структуру документа с помощью пакета SDK Open XML, необходимо создать Document экземпляр класса, назначить его свойству Document части документа main, а затем добавить экземпляры Bodyклассов , ParagraphRun и Text . Это показано в примере кода, где выполняется генерация нужной разметки WordprocessingML. Хотя код в примере описания вызывает AppendChild метод каждого класса, иногда можно сделать код короче и проще для чтения с помощью метода, показанного в следующем примере кода.

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

Пример кода

Метод CreateWordprocessingDocument можно использовать для создания базового документа Word. Он вызывается при передаче полного пути в качестве единственного параметра. В следующем примере кода создается файл Invoice.docx в папке "Общие документы".

CreateWordprocessingDocument(args[0]);

Учтите, что расширение файла DOCX совпадает с типом файла, указанным в параметре WordprocessingDocumentType.Document при вызове метода Create.

Ниже приведен полный пример кода на языках C# и Visual Basic.

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"));
    }

См. также