Share via


Crear un documento de procesamiento de texto proporcionando un nombre de archivo

En este tema se muestra cómo usar las clases del SDK de Open XML para Office para crear mediante programación un documento de procesamiento de texto.


Creación de un objeto WordprocessingDocument

En Open XML SDK, la clase WordprocessingDocument representa un paquete de documentos de Word. Para crear un documento de Word, debe crear una instancia de la clase WordprocessingDocument y rellenarla con partes. Como mínimo, el documento debe tener una parte de documento principal que sirva como contenedor del texto principal del documento. El texto está representado en el paquete como XML que usa marcado WordprocessingML.

Para crear la instancia de clase que llame el método Create(String, WordprocessingDocumentType). Se proporcionan varios métodos Create(), cada uno con una firma diferente. El código de ejemplo en este tema usa el método Create con una firma que requiere dos parámetros. El primer parámetro lleva una cadena de ruta de acceso completa que representa el documento que desea crear. El segundo parámetro es un miembro de la enumeración WordprocessingDocumentType. Este parámetro representa el tipo de documento. Por ejemplo, hay un miembro diferente de la enumeración WordProcessingDocumentType para cada documento, plantilla y la variedad de documento y plantilla con macros habilitadas.

Nota:

[!NOTA] Seleccione cuidadosamente el WordProcessingDocumentType correcto y compruebe que el archivo almacenado tenga la extensión de archivo coincidente correcta. Si WordProcessingDocumentType> no coincide con la extensión de archivo, se produce un error al abrir el archivo en Microsoft Word.

El código que llama al método Create forma parte de una instrucción using seguida de un bloque entre corchetes, como se muestra en el siguiente ejemplo de código.

    using (WordprocessingDocument wordDocument =
        WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
    {
        // Insert other code here. 
    }

La instrucción using proporciona una alternativa recomendada a la típica secuencia .Create, .Save, .Close. Asegura que el método Dispose () (método interno usado por Open XML SDK para limpiar recursos) se llame automáticamente cuando se llega al corchete de cierre. El bloque posterior a la instrucción using establece un ámbito para el objeto que se crea o se nombra en la instrucción using, en este caso wordDocument. Debido a que la clase WordprocessingDocument de Open XML SDK automáticamente guarda y cierra el objeto como parte de su implementación System.IDisposable, y como se llama automáticamente a Dispose al salir del bloque entre corchetes, no es necesario llamar explícitamente a Save y Close, siempre y cuando use using.

Una vez que haya creado el paquete de documentos de Word, puede agregarle partes. Para agregar la parte de documento principal, debe llamar al método AddMainDocumentPart() de la clase WordprocessingDocument. Una vez hecho esto, puede comenzar a agregar el texto y la estructura del documento.


Estructura de un documento WordProcessingML

La estructura de documento básica de un documento WordProcessingML contiene los elementos document y body, seguidos de uno o varios elementos a nivel de bloque, como p, que representa un párrafo. Un párrafo contiene uno o varios elementos r. La r representa a run (segmento), que es una región de texto con un conjunto de propiedades comunes, como el formato. Un segmento contiene uno o varios elementos t. El elemento t contiene un intervalo de texto. En el siguiente ejemplo de código se muestra el marcado WordprocessingML de un documento que contiene el texto "Example text".

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

Con el SDK de Open XML, puede crear contenido y estructura de documentos mediante clases fuertemente tipadas que corresponden a elementos WordprocessingML . Puede encontrar estas clases en el espacio de nombres DocumentFormat.OpenXml.Wordprocessing . La tabla siguiente muestra los nombres de las clases que corresponden a los elementos document, body, p, r y t.

Elemento de WordprocessingML Open XML SDK (clase) Descripción
documento Document El elemento raíz del elemento de documento principal.
body Body El contenedor de las estructuras a nivel de bloque, como párrafos, tablas, anotaciones y otras recogidas en la especificación ISO/IEC 29500.
p Paragraph Un párrafo.
r Run Un segmento.
t Text Un intervalo de texto.

Para obtener más información sobre la estructura general de los elementos y elementos de un documento WordprocessingML, vea Estructura de un documento WordprocessingML.


Generación del marcado WordprocessingML

Para crear la estructura de documento básica mediante Open XML SDK, debe crear una instancia de la clase Document, asignarla a la propiedad Document del elemento de documento principal y agregar instancias de las clases Body, Paragraph, Run y Text. Esto se muestra en la lista de código de ejemplo y permite generar el marcado WordprocessingML requerido. Si bien el código de la lista del ejemplo llama al método AppendChild de cada clase, en ocasiones puede hacer el código más breve y fácil de leer mediante la técnica que se muestra en el siguiente ejemplo de código.

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

Código de ejemplo

El método CreateWordprocessingDocument se puede usar para crear un documento de Word básico. Para llamarlo, se debe pasar una ruta de acceso completa como único parámetro. En el siguiente ejemplo de código, se crea el archivo Invoice.docx en la carpeta Documentos públicos.

    CreateWordprocessingDocument(@"c:\Users\Public\Documents\Invoice.docx");

La extensión de archivo, .docx, coincide con el tipo de archivo especificado por el parámetro WordprocessingDocumentType.Document en la llamada al método Create.

A continuación se muestra el ejemplo de código completo en C# y Visual Basic.


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

CreateWordprocessingDocument(args[0]);

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

Vea también