Compartir a través de


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 el SDK de Open XML, la WordprocessingDocument clase representa un paquete de documento Word. Para crear un documento Word, cree una instancia de la WordprocessingDocument clase y rellénela 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, llame al Create(String, WordprocessingDocumentType) método . Se proporcionan varios Create métodos, cada uno con una firma diferente. El código de ejemplo de este tema usa el Create método con una firma que requiere dos parámetros. El primer parámetro toma una cadena de ruta de acceso completa que representa el documento que desea crear. El segundo parámetro es miembro de la WordprocessingDocumentType enumeración . Este parámetro representa el tipo de documento. Por ejemplo, hay un miembro diferente de la WordProcessingDocumentType enumeración para cada documento, plantilla y la macro habilitada variedad de documento y plantilla.

Nota:

Seleccione cuidadosamente el archivo adecuado WordProcessingDocumentType y compruebe que el archivo persistente tiene la extensión de archivo correcta y coincidente. WordProcessingDocumentType Si 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 Create método forma parte de una using instrucción seguida de un bloque entre corchetes, como se muestra en el ejemplo de código siguiente.

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

Con v3.0.0+ el Close() método se ha quitado en favor de confiar en la instrucción using. Garantiza que se llama automáticamente al Dispose() método cuando se alcanza la llave de cierre. El bloque que sigue a la instrucción using establece un ámbito para el objeto que se crea o se nombra en la instrucción using. Dado que la WordprocessingDocument clase del SDK de Open XML guarda y cierra automáticamente el objeto como parte de su IDisposable implementación y, dado Dispose() que se llama automáticamente al salir del bloque, no es necesario llamar Save() explícitamente o siempre que Dispose() use una using instrucción.

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


Estructura de un documento WordProcessingML

La estructura básica de un WordProcessingML documento consta de los document elementos y body , seguidos de uno o varios elementos de nivel de bloque, como p, que representa un párrafo. Un párrafo contiene uno o varios r elementos. significa r ejecutar, que es una región de texto con un conjunto común de propiedades, como el formato. Una ejecución contiene uno o varios t elementos. El t elemento contiene un intervalo de texto. En el ejemplo de código siguiente se muestra el WordprocessingML marcado de un documento que contiene el texto "Texto de ejemplo".

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

Con el SDK de Open XML, puede crear contenido y estructura de documentos mediante clases fuertemente tipadas que corresponden a WordprocessingML elementos. Encontrará estas clases en el espacio de DocumentFormat.OpenXml.Wordprocessing nombres. En la tabla siguiente se enumeran los nombres de clase de las clases correspondientes a los documentelementos , body, p, ry t .

Elemento de WordprocessingML Open XML SDK (clase) Descripción
<document/> 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 básica del documento mediante el SDK de Open XML, cree una instancia de la Document clase, asígnela a la Document propiedad del elemento de documento principal y, a continuación, agregue instancias de las Bodyclases , ParagraphRun y Text . Esto se muestra en la lista de código de ejemplo y permite generar el marcado WordprocessingML requerido. Aunque el código de la lista de ejemplo llama al AppendChild método de cada clase, a veces puede hacer que el código sea más corto y fácil de leer mediante la técnica que se muestra en el ejemplo de código siguiente.

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

Código de ejemplo

El CreateWordprocessingDocument método 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(args[0]);

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.

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