Saltar al pie de página
USANDO IRONWORD

Cómo Crear Documentos Word Sin Office Interop en C#

Los documentos de Microsoft Word se utilizan ampliamente para diversos propósitos, desde informes formales de negocios hasta cartas personales. En C#, los desarrolladores a menudo necesitan generar documentos de Microsoft Word de forma programática. Los desarrolladores de aplicaciones de Windows han utilizado tradicionalmente Microsoft Office Interop para generar y crear documentos de Word usando C#.

Sin embargo, este enfoque no está accesible para todos, y se pueden encontrar desarrolladores usando un sistema operativo o en una máquina Linux donde la interfaz de Microsoft Office no está disponible. En estos casos, los desarrolladores deben explorar otras bibliotecas que puedan funcionar independientemente en diferentes plataformas. Una de esas bibliotecas poderosas para trabajar con archivos de Word de manera programática es IronWord, de Iron Software.

IronWord proporciona funcionalidad robusta para trabajar con documentos de Word en aplicaciones .NET y puede funcionar en diferentes plataformas e imágenes/contendores Docker basados en Linux. Con IronWord, que tiene una API intuitiva de C#, VB.NET para Documentos de Word y Docx, no hay necesidad de instalar Microsoft Office, automatización de Office o Word Interop, para construir, editar y exportar archivos de documentos de Word. IronWord soporta completamente .NET 8, 7, 6, Framework, Core y Azure.

Este artículo explorará la creación de documentos de Word en C# usando la biblioteca IronWord.

Cómo crear documentos de Word sin interoperabilidad de Office en C

  1. Cree un nuevo proyecto de C#.
  2. Instale la biblioteca IronWord.
  3. Cree un documento de Word usando la biblioteca IronWord.
  4. Añada contenido al documento existente.
  5. Guarde el documento de Word creado.
  6. Abra y muestre el documento de Word creado.

Requisitos previos:

  1. Visual Studio: Asegúrate de tener instalado Visual Studio o cualquier otro entorno de desarrollo de C#.
  2. Administrador de Paquetes NuGet: Asegúrate de poder usar NuGet para gestionar paquetes en tu proyecto.

Paso 1: Crear un nuevo proyecto de C

Cree una nueva aplicación de consola en C# o use un proyecto existente donde desee generar el documento de Word.

Selecciona la plantilla de aplicación de consola y haz clic en siguiente.

Cómo Crear Documentos de Word Sin Office Interop en C#: Figura 1 - Plantilla de App de Consola para crear un nuevo proyecto

En el siguiente paso, puedes proporcionar los nombres de solución y proyecto.

Cómo Crear Documentos de Word Sin Office Interop en C#: Figura 2 - Configurando proyecto con nombre de solución y proyecto

Selecciona la versión de .NET y haz clic en 'Crear'.

Cómo Crear Documentos de Word Sin Office Interop en C#: Figura 3 - Creando proyecto con la versión correcta de .NET

Paso 2: Instalar la biblioteca de IronWord

Abra su proyecto C# e instale la biblioteca IronWord usando la Consola del Administrador de Paquetes NuGet:

Install-Package IronWord -Version 2024.1.2

El paquete NuGet también se puede instalar usando el Administrador de Paquetes de Visual Studio, como se muestra a continuación.

Cómo Crear Documentos de Word Sin Office Interop en C#: Figura 4 - Instalando IronWord con el administrador de paquetes VS

Paso 3: Cree y guarde un documento de Word usando la biblioteca IronWord

Comencemos con el ejemplo simple de crear un documento de Word usando la biblioteca IronWord. El siguiente código demuestra cómo crear un documento de Word básico con un solo párrafo que contiene el texto "¡Hola, Mundo!"

using IronWord;
using IronWord.Models;

// Create a text run instance with "Hello, World!" content
TextRun textRun = new TextRun("Hello, World!");

// Create a paragraph and add the text run to it
Paragraph paragraph = new Paragraph();
paragraph.AddTextRun(textRun);

// Create a new Word document object with the paragraph
WordDocument doc = new WordDocument(paragraph);

// Save the document as a .docx file
doc.SaveAs("example.docx"); // Saves the file to disk with the name example.docx
using IronWord;
using IronWord.Models;

// Create a text run instance with "Hello, World!" content
TextRun textRun = new TextRun("Hello, World!");

// Create a paragraph and add the text run to it
Paragraph paragraph = new Paragraph();
paragraph.AddTextRun(textRun);

// Create a new Word document object with the paragraph
WordDocument doc = new WordDocument(paragraph);

// Save the document as a .docx file
doc.SaveAs("example.docx"); // Saves the file to disk with the name example.docx
Imports IronWord
Imports IronWord.Models

' Create a text run instance with "Hello, World!" content
Private textRun As New TextRun("Hello, World!")

' Create a paragraph and add the text run to it
Private paragraph As New Paragraph()
paragraph.AddTextRun(textRun)

' Create a new Word document object with the paragraph
Dim doc As New WordDocument(paragraph)

' Save the document as a .docx file
doc.SaveAs("example.docx") ' Saves the file to disk with the name example.docx
$vbLabelText   $csharpLabel

Después de ejecutar el ejemplo de código anterior, se crea el nuevo archivo de documento, example.docx, y la salida es como se muestra a continuación.

Cómo Crear Documentos de Word Sin Office Interop en C#: Figura 5 - Documento de Word creado a través del código anterior.

Este es un ejemplo fundamental de generar un archivo de documento de Word usando IronWord. Para más información, puede leer la Documentación.

Cómo agregar párrafos con estilo a un documento de Word

Ahora que sabemos cómo crear un documento de Word simple usando IronWord, vamos a añadir párrafos y texto con estilo.

TextRun también puede tomar datos de estilo, mejorando la representación visual del texto. El texto se puede configurar con estilos como tachado, negrita, cursiva y subrayado.

Modifique y añada el código a continuación al programa que ha creado previamente.

using IronWord;
using IronWord.Models;

// Create text runs with different styles
TextRun textRun = new TextRun("Hello, World!"); // Simple string
Paragraph paragraph = new Paragraph();
paragraph.AddTextRun(textRun);

// Configure and add italic text
TextRun introText = new TextRun("This is an example paragraph with italic and bold styling.");
TextStyle italicStyle = new TextStyle()
{
    IsItalic = true
};
TextRun italicText = new TextRun("Italic example sentence.", italicStyle);

// Configure and add bold text
TextStyle boldStyle = new TextStyle()
{
    IsBold = true
};
TextRun boldText = new TextRun("Bold example sentence.", boldStyle);

// Add text runs to the paragraph
paragraph.AddTextRun(introText);
paragraph.AddTextRun(italicText);
paragraph.AddTextRun(boldText);

// Create and save the new Word document
WordDocument doc = new WordDocument(paragraph);
doc.SaveAs("example.docx"); // Saves the file to disk with the name example.docx
using IronWord;
using IronWord.Models;

// Create text runs with different styles
TextRun textRun = new TextRun("Hello, World!"); // Simple string
Paragraph paragraph = new Paragraph();
paragraph.AddTextRun(textRun);

// Configure and add italic text
TextRun introText = new TextRun("This is an example paragraph with italic and bold styling.");
TextStyle italicStyle = new TextStyle()
{
    IsItalic = true
};
TextRun italicText = new TextRun("Italic example sentence.", italicStyle);

// Configure and add bold text
TextStyle boldStyle = new TextStyle()
{
    IsBold = true
};
TextRun boldText = new TextRun("Bold example sentence.", boldStyle);

// Add text runs to the paragraph
paragraph.AddTextRun(introText);
paragraph.AddTextRun(italicText);
paragraph.AddTextRun(boldText);

// Create and save the new Word document
WordDocument doc = new WordDocument(paragraph);
doc.SaveAs("example.docx"); // Saves the file to disk with the name example.docx
Imports IronWord
Imports IronWord.Models

' Create text runs with different styles
Private textRun As New TextRun("Hello, World!") ' Simple string
Private paragraph As New Paragraph()
paragraph.AddTextRun(textRun)

' Configure and add italic text
Dim introText As New TextRun("This is an example paragraph with italic and bold styling.")
Dim italicStyle As New TextStyle() With {.IsItalic = True}
Dim italicText As New TextRun("Italic example sentence.", italicStyle)

' Configure and add bold text
Dim boldStyle As New TextStyle() With {.IsBold = True}
Dim boldText As New TextRun("Bold example sentence.", boldStyle)

' Add text runs to the paragraph
paragraph.AddTextRun(introText)
paragraph.AddTextRun(italicText)
paragraph.AddTextRun(boldText)

' Create and save the new Word document
Dim doc As New WordDocument(paragraph)
doc.SaveAs("example.docx") ' Saves the file to disk with the name example.docx
$vbLabelText   $csharpLabel

Cómo agregar una tabla a un documento de Word

Para una representación clara de los datos, también se puede representar en una cuadrícula. Cuando los datos se organizan como una cuadrícula, se llama tabla. Usando IronWord, podemos añadir tablas e imágenes al documento de Word como se muestra a continuación:

using IronWord;
using IronWord.Models;

// Create a table cell with sample text
TableCell cell = new TableCell();
TextRun textRun = new TextRun("Sample text");

// Add text run to the cell as a paragraph
cell.AddContent(new Paragraph(textRun));

// Configure cell border style
BorderStyle borderStyle = new BorderStyle
{
    BorderColor = new IronColor(IronSoftware.Drawing.Color.Black),
    BorderValue = IronWord.Models.Enums.BorderValues.Thick,
    BorderSize = 5
};

// Set table borders
TableBorders tableBorders = new TableBorders
{
    TopBorder = borderStyle,
    RightBorder = borderStyle,
    BottomBorder = borderStyle,
    LeftBorder = borderStyle
};
cell.Borders = tableBorders;

// Create a table row and add cells to it
TableRow row = new TableRow();
row.AddCell(cell); // Add the first cell
row.AddCell(cell); // Add the second cell, duplicating to mimic a row with two identical cells

// Create a table and add the row to the table
Table table = new Table();
table.AddRow(row);

// Create and save a Word document using the table
WordDocument doc = new WordDocument(table);
doc.SaveAs("Document.docx"); // Saves the file to disk with the name Document.docx
using IronWord;
using IronWord.Models;

// Create a table cell with sample text
TableCell cell = new TableCell();
TextRun textRun = new TextRun("Sample text");

// Add text run to the cell as a paragraph
cell.AddContent(new Paragraph(textRun));

// Configure cell border style
BorderStyle borderStyle = new BorderStyle
{
    BorderColor = new IronColor(IronSoftware.Drawing.Color.Black),
    BorderValue = IronWord.Models.Enums.BorderValues.Thick,
    BorderSize = 5
};

// Set table borders
TableBorders tableBorders = new TableBorders
{
    TopBorder = borderStyle,
    RightBorder = borderStyle,
    BottomBorder = borderStyle,
    LeftBorder = borderStyle
};
cell.Borders = tableBorders;

// Create a table row and add cells to it
TableRow row = new TableRow();
row.AddCell(cell); // Add the first cell
row.AddCell(cell); // Add the second cell, duplicating to mimic a row with two identical cells

// Create a table and add the row to the table
Table table = new Table();
table.AddRow(row);

// Create and save a Word document using the table
WordDocument doc = new WordDocument(table);
doc.SaveAs("Document.docx"); // Saves the file to disk with the name Document.docx
Imports IronWord
Imports IronWord.Models

' Create a table cell with sample text
Private cell As New TableCell()
Private textRun As New TextRun("Sample text")

' Add text run to the cell as a paragraph
cell.AddContent(New Paragraph(textRun))

' Configure cell border style
Dim borderStyle As New BorderStyle With {
	.BorderColor = New IronColor(IronSoftware.Drawing.Color.Black),
	.BorderValue = IronWord.Models.Enums.BorderValues.Thick,
	.BorderSize = 5
}

' Set table borders
Dim tableBorders As New TableBorders With {
	.TopBorder = borderStyle,
	.RightBorder = borderStyle,
	.BottomBorder = borderStyle,
	.LeftBorder = borderStyle
}
cell.Borders = tableBorders

' Create a table row and add cells to it
Dim row As New TableRow()
row.AddCell(cell) ' Add the first cell
row.AddCell(cell) ' Add the second cell, duplicating to mimic a row with two identical cells

' Create a table and add the row to the table
Dim table As New Table()
table.AddRow(row)

' Create and save a Word document using the table
Dim doc As New WordDocument(table)
doc.SaveAs("Document.docx") ' Saves the file to disk with the name Document.docx
$vbLabelText   $csharpLabel

En el ejemplo anterior, añadimos una tabla a un documento de Word usando bordes.

Cómo agregar imágenes a un documento de Word

Las imágenes mejoran la presentación del documento y pueden añadir más colores y atractivo visual.

Las imágenes se pueden añadir programáticamente a un documento de Word usando IronWord como se muestra en el código a continuación:

using IronWord;
using IronWord.Models;

// Load a new document
WordDocument doc = new WordDocument();

// Configure and add image to the document
IronWord.Models.Image image = new IronWord.Models.Image("SalesChart.jpg")
{
    Width = 200, // Set image width in pixels
    Height = 200 // Set image height in pixels
};
Paragraph paragraph = new Paragraph();
paragraph.AddImage(image); // Add image to paragraph
doc.AddParagraph(paragraph); // Add paragraph to the document

// Save the document as a .docx file
doc.SaveAs("save_document.docx"); // Saves the file to disk with the name save_document.docx
using IronWord;
using IronWord.Models;

// Load a new document
WordDocument doc = new WordDocument();

// Configure and add image to the document
IronWord.Models.Image image = new IronWord.Models.Image("SalesChart.jpg")
{
    Width = 200, // Set image width in pixels
    Height = 200 // Set image height in pixels
};
Paragraph paragraph = new Paragraph();
paragraph.AddImage(image); // Add image to paragraph
doc.AddParagraph(paragraph); // Add paragraph to the document

// Save the document as a .docx file
doc.SaveAs("save_document.docx"); // Saves the file to disk with the name save_document.docx
Imports IronWord
Imports IronWord.Models

' Load a new document
Private doc As New WordDocument()

' Configure and add image to the document
Private image As New IronWord.Models.Image("SalesChart.jpg") With {
	.Width = 200,
	.Height = 200
}
Private paragraph As New Paragraph()
paragraph.AddImage(image) ' Add image to paragraph
doc.AddParagraph(paragraph) ' Add paragraph to the document

' Save the document as a .docx file
doc.SaveAs("save_document.docx") ' Saves the file to disk with the name save_document.docx
$vbLabelText   $csharpLabel

Aquí, estamos añadiendo una imagen usando IronWord.Models.Image con una Altura y Anchura de 200 píxeles a un párrafo.

Licencia (Prueba gratuita disponible)

IronWord requiere una licencia para ser utilizado. Obtenga una clave de prueba desde el sitio web de Iron Software. Esta clave necesita ser colocada en appsettings.json.

{
    "IronWord.LicenseKey": "IRONWORD.MYLICENSE.KEY.TRIAL"
}

Proporcione su correo para una licencia de prueba. Después de enviar su ID de correo electrónico, la clave se entregará por correo.

Cómo Crear Documentos de Word Sin Office Interop en C#: Figura 6 - Popup tras enviar exitosamente el formulario de prueba

Conclusión

Crear documentos de Word en C# usando la biblioteca IronWord proporciona una forma flexible y eficiente de generar documentos sin depender de Microsoft Office. Ya sea que necesite crear cartas simples o informes complejos con tablas e imágenes, IronWord le permite lograr esto de manera programática. Este artículo proporciona un tutorial completo sobre la creación de documentos de Word. Con IronWord, tiene el poder de automatizar la creación de documentos de Word, haciendo que sus aplicaciones C# sean más versátiles y productivas.

Y para los desarrolladores que buscan la manipulación de archivos PDF para funcionar junto con sus documentos de Word generados, no busque más que IronPDF, otra biblioteca C# producida por Iron Software.

Preguntas Frecuentes

¿Cómo puedo crear documentos de Word en C# sin usar Microsoft Office Interop?

Puedes crear documentos de Word en C# sin usar Microsoft Office Interop aprovechando la biblioteca IronWORD. Esta biblioteca te permite generar, editar y guardar documentos de Word programáticamente sin necesidad de la instalación de Microsoft Office.

¿Cuáles son las ventajas de usar IronWORD sobre Microsoft Office Interop?

IronWORD proporciona la flexibilidad de funcionar en plataformas no Windows como Linux, donde Microsoft Office Interop no está disponible. También elimina la dependencia de tener Microsoft Office instalado, simplificando el proceso de desarrollo.

¿Cómo empiezo a crear un documento de Word usando IronWORD?

Para empezar a crear un documento de Word usando IronWORD, primero instala la biblioteca IronWORD a través del Administrador de Paquetes NuGet en tu proyecto C#. Luego, utiliza la API de IronWORD para construir y manipular documentos de Word programáticamente.

¿Puedo usar IronWORD con las últimas versiones de .NET?

Sí, IronWORD es compatible con varias versiones de .NET, incluyendo .NET 8, 7, 6, Framework, Core y Azure, permitiéndote integrarlo en aplicaciones C# modernas.

¿Cómo puedo agregar texto estilizado a un documento de Word con IronWORD?

IronWORD te permite agregar texto estilizado usando las clases TextRun y TextStyle. Estas clases te permiten aplicar estilos como negrita, cursiva y subrayado a segmentos de texto específicos dentro de tu documento de Word.

¿Es posible incluir tablas en documentos de Word usando IronWORD?

Sí, puedes incluir tablas en documentos de Word usando IronWORD. La biblioteca te permite definir tablas con filas y celdas, y puedes personalizar su apariencia con bordes y otros estilos.

¿Cómo inserto imágenes en un documento de Word usando IronWORD?

Para insertar imágenes en un documento de Word usando IronWORD, puedes usar la clase IronWord.Models.Image para incrustar imágenes con dimensiones especificadas en párrafos, mejorando el contenido visual de tu documento.

¿Hay una versión de prueba de IronWORD disponible para evaluación?

Sí, Iron Software ofrece una prueba gratuita de IronWORD, que puedes descargar desde su sitio web. Esta prueba te permite evaluar las características y capacidades de la biblioteca antes de realizar una compra.

¿Qué otras bibliotecas de manipulación de documentos proporciona Iron Software?

Además de IronWORD, Iron Software proporciona IronPDF, una biblioteca para manipular archivos PDF. Juntas, estas bibliotecas ofrecen soluciones completas para manejar tanto documentos de Word como PDF en aplicaciones C#.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más