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 document
elementos , body
, p
, r
e 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 Body
classes , Paragraph
Run
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"));
}