Compartilhar via


Criar um documento de processamento de texto ao fornecer um nome de arquivo

Este tópico mostra como utilizar as classes no SDK Open XML para o Office para criar programaticamente um documento de processamento de palavras.


Criar um Objeto WordprocessingDocument

No SDK Open XML, a WordprocessingDocument classe representa um pacote de documento Word. Para criar um Word documento, crie uma instância da classe e preencha-a WordprocessingDocument com partes. No mínimo, o documento tem de ter uma parte do documento main que sirva de contentor para a main texto do documento. O texto é representado no pacote como XML com a marcação WordprocessingML.

Para criar a instância de classe a que chama o Create(String, WordprocessingDocumentType) método . São fornecidos vários Create métodos, cada um com uma assinatura diferente. O código de exemplo neste tópico utiliza o Create método com uma assinatura que requer dois parâmetros. O primeiro parâmetro utiliza uma cadeia de caminho completa que representa o documento que pretende criar. O segundo parâmetro é um membro da WordprocessingDocumentType enumeração. Este parâmetro representa o tipo de documento. Por exemplo, existe um membro diferente da WordProcessingDocumentType enumeração para cada documento, modelo e a variedade de documentos e modelos com permissão para macros.

Observação

Selecione cuidadosamente o adequado WordProcessingDocumentType e verifique se o ficheiro persistente tem a extensão de ficheiro correspondente correta. Se o WordProcessingDocumentType não corresponder à extensão do ficheiro, ocorrerá um erro ao abrir o ficheiro no Microsoft Word.

O código que chama o Create método faz parte de uma using instrução seguida de um bloco entre parênteses retos, conforme mostrado no exemplo de código seguinte.

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

Com a v3.0.0+ o Close() método foi removido a favor de depender da instrução using. Garante que o Dispose() método é chamado automaticamente quando a chaveta de fecho é atingida. O bloco que segue a instrução using estabelece um âmbito para o objeto que é criado ou nomeado na instrução using. Uma vez que a WordprocessingDocument classe no SDK Open XML guarda e fecha automaticamente o objeto como parte da respetiva IDisposable implementação e porque Dispose() é automaticamente chamada quando sai do bloco, não tem de chamar Save() explicitamente ou Dispose() desde que utilize uma using instrução.

Depois de criar o pacote de documento Word, pode adicionar partes ao mesmo. Para adicionar a main parte do documento, chama o AddMainDocumentPart método da WordprocessingDocument classe . Depois de o fazer, pode definir a adição da estrutura e do texto do documento.


Estrutura de um Documento wordProcessingML

A estrutura de documentos básica de um WordProcessingML documento consiste nos document elementos e body , seguidos por um ou mais elementos de nível de bloco, como p, que representa um parágrafo. Um parágrafo contém um ou mais r elementos. Significa r execução, que é uma região de texto com um conjunto comum de propriedades, como formatação. Uma execução contém um ou mais t elementos. O t elemento contém um intervalo de texto. O seguinte exemplo de código mostra a WordprocessingML marcação de um documento que contém o texto "Texto de exemplo".

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

Com o SDK Open XML, pode criar estrutura e conteúdo de documentos com classes com tipos fortes que correspondem a WordprocessingML elementos. Encontrará estas classes no espaço de nomes. A tabela seguinte lista os nomes das classes que correspondem aos documentelementos , body, p, re t .

WordprocessingML Element Abrir Classe SDK XML Descrição
<document/> Document O elemento raiz para a parte do documento principal.
<body/> Body O contentor para as estruturas de nível de bloco, como parágrafos, tabelas, anotações e outros especificados na especificação ISO/IEC 29500 .
<p/> Paragraph Um parágrafo.
<r/> Run Uma execução.
<t/> Text Um intervalo de texto.

Para obter mais informações sobre a estrutura geral das partes e elementos de um documento do WordprocessingML, veja Structure of a WordprocessingML document (Estrutura de um documento wordprocessingML).


Gerar a Marcação wordprocessingML

Para criar a estrutura básica do documento com o SDK Open XML, instancia a Document classe, atribui-a à Document propriedade da parte do documento main e, em seguida, adiciona instâncias das Bodyclasses , ParagraphRun e Text . Isto é mostrado na listagem de código de exemplo e faz o trabalho de gerar a marcação wordprocessingML necessária. Embora o código na listagem de exemplo chame o AppendChild método de cada classe, por vezes pode tornar o código mais curto e fácil de ler com a técnica apresentada no seguinte exemplo de código.

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

Código de exemplo

O CreateWordprocessingDocument método pode ser utilizado para criar um documento de Word básico. Pode chamá-lo ao transmitir um caminho completo como o único parâmetro. O exemplo de código seguinte cria o ficheiro Invoice.docx na pasta Documentos Públicos.

CreateWordprocessingDocument(args[0]);

A extensão de ficheiro, .docx, corresponde ao tipo de ficheiro especificado pelo parâmetro WordprocessingDocumentType.Document na chamada para o método Create .

Segue-se o exemplo de código completo em C# e 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"));
    }

Confira também