Saltar al pie de página
USANDO IRONWORD

Cómo Manipular un Documento Word Usando C#

Microsoft creó Word para servir como procesador de texto. Inicialmente disponible bajo el nombre Multi-Tool Word para sistemas Xenix, fue introducido el 25 de octubre de 1983. Se desarrollaron versiones posteriores para una amplia gama de sistemas operativos, como SCO Unix (1990), Microsoft Windows (1989), Atari ST (1988), OS/2 (1989), AT&T UNIX PC (1985), PCs de IBM con DOS (1983), Apple Macintosh con el clásico macOS (1985), macOS (2001), navegadores web (2010), iOS (2014) y Android (2015). Se puede usar Wine para ejecutar versiones más antiguas de Microsoft Word en Linux.

Las versiones comerciales de Word se pueden licenciar como una aplicación independiente o como un componente de Microsoft 365, que se puede comprar como una licencia perpetua o como parte de una suscripción a Microsoft 365. En este artículo, manipularemos documentos Word usando C# con la ayuda de ensamblados de Interop de Microsoft y exploraremos cómo IronXL nos ayuda a Editar documentos de Excel.

Cómo manipular documentos de Word con C

  1. Cree un nuevo proyecto en Visual Studio.
  2. Configure la biblioteca necesaria para leer documentos de Word.
  3. Para manipular un documento de Word, cargue un archivo existente o cree un nuevo archivo.
  4. Edite los datos del documento y analice el archivo.
  5. Elimine todos los objetos creados.

¿Qué es Microsoft Interop?

Los programas escritos en C# o VB.NET pueden crear o abrir documentos de Word (DOC, DOCX y RTF) con la interoperabilidad para Microsoft Word. Sin embargo, presenta muchos inconvenientes cuando se utiliza en proyectos.

En este artículo, discutiremos problemas frecuentes que puede encontrar al usar Microsoft Office Interop (Automatización de Word) desde C# o VB.NET.

Por ejemplo:

  • Cada PC cliente requerida para la automatización de Word debe tener una licencia para Microsoft Word.
  • En cada PC del cliente debe estar instalada la misma versión de Microsoft Word.
  • Word usa algunos megabytes de RAM para cargar diferentes archivos y DLLs en segundo plano cuando se emplea la automatización.
  • La API de Microsoft Word se accede a través de un objeto COM. Pueden surgir problemas al llamar a un objeto COM desde código gestionado, como conversiones de tipos, la necesidad de un envoltorio COM y la pobre integración con .NET Framework.

Crear un nuevo proyecto en Visual Studio

Es necesario iniciar Visual Studio y crear un proyecto .NET antes de usar la biblioteca Interop. Visual Studio es compatible con cualquier versión, aunque se recomienda la más reciente. Dependiendo de sus necesidades, puede desarrollar una plantilla de proyecto o una aplicación que se asemeje a Windows Forms. En este caso, usaré la Aplicación de Consola por simplicidad.

Cómo manipular un documento de Word usando C#: Figura 1 - Creando un nuevo proyecto en Visual Studio

Configurar detalles del proyecto

A continuación, proporcione la ubicación y el nombre del proyecto.

Cómo manipular un documento de Word usando C#: Figura 2 - Configurando el nuevo proyecto de VS

Crear un nuevo archivo de proyecto utilizando .NET Framework

Usando el menú desplegable del Framework, puede elegir un .NET Framework. Se utilizará el Dot.NET Framework 4.7 para este proyecto. La siguiente acción es presionar el botón "Crear".

Después de que la aplicación haya generado la solución, puede ingresar el código y compilar o ejecutar el programa accediendo al archivo Program.cs.

Cómo manipular un documento de Word usando C#: Figura 3 - Nuevo archivo .cs del proyecto .NET

Ahora que se ha agregado la biblioteca Microsoft.Office.Interop.Word, podemos probar el código.

Instalar la biblioteca de interoperabilidad

La siguiente reparación requiere la instalación de la biblioteca Interop. Ingrese el siguiente comando en la consola del Administrador de Paquetes NuGet para lograr esto:

Install-Package Microsoft.Office.Interop.Word

Cómo manipular un documento de Word usando C#: Figura 4 - Para instalar la biblioteca IronXL, puede usar la consola del Administrador de Paquetes e ingresar el comando dado: Install-Package IronXL.Excel

Otra forma de encontrar el paquete "Interop" es usar el Administrador de Paquetes NuGet. Entre todos los paquetes NuGet relacionados con Interop, podemos seleccionar el paquete requerido para descargar de esta lista.

Cómo manipular un documento de Word usando C#: Figura 5 - Seleccionando la biblioteca `Microsoft.Office.Interop.Word`

Una vez que haya instalado todas las bibliotecas necesarias, puede comenzar a editar archivos DOCX.

Manipular documentos de Word existentes mediante interoperabilidad

Para usar Microsoft Word, primero debe crear una instancia de Microsoft.Office.Interop.Word.Application. La comunicación de documentos de Word se llevaría a cabo en esta instancia. El siguiente paso es crear una nueva instancia de documento de Word utilizando la propiedad Documents de la instancia de Microsoft.Office.Interop.Word.Application que acabamos de crear. Como se ve en el extracto de código C# a continuación, esto nos permite manipular documentos de Word programáticamente:

using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main()
    {
        try
        {
            // Create a new instance of Word Application
            var WordApp = new Microsoft.Office.Interop.Word.Application();
            // Open an existing document
            var WordDoc = WordApp.Documents.Open(@"d:/Demo.docx");
            // Edit the content of the first paragraph
            WordDoc.Paragraphs[1].Range.Text = "New text here...";
            // Save the edited document
            WordDoc.SaveAs(@"d:/NewDemo.docx");
            // Close the document
            WordDoc.Close();
            // Quit the Word application
            WordApp.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}
using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main()
    {
        try
        {
            // Create a new instance of Word Application
            var WordApp = new Microsoft.Office.Interop.Word.Application();
            // Open an existing document
            var WordDoc = WordApp.Documents.Open(@"d:/Demo.docx");
            // Edit the content of the first paragraph
            WordDoc.Paragraphs[1].Range.Text = "New text here...";
            // Save the edited document
            WordDoc.SaveAs(@"d:/NewDemo.docx");
            // Close the document
            WordDoc.Close();
            // Quit the Word application
            WordApp.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}
Imports System
Imports Microsoft.Office.Interop.Word

Friend Class Program
	Shared Sub Main()
		Try
			' Create a new instance of Word Application
			Dim WordApp = New Microsoft.Office.Interop.Word.Application()
			' Open an existing document
			Dim WordDoc = WordApp.Documents.Open("d:/Demo.docx")
			' Edit the content of the first paragraph
			WordDoc.Paragraphs(1).Range.Text = "New text here..."
			' Save the edited document
			WordDoc.SaveAs("d:/NewDemo.docx")
			' Close the document
			WordDoc.Close()
			' Quit the Word application
			WordApp.Quit()
		Catch ex As Exception
			Console.WriteLine(ex.ToString())
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

En el código anterior, podemos editar el documento de Word en C#. Primero, creamos una instancia de la aplicación de Word usando Interop. Luego, el método Open se usa para abrir un archivo de Word existente, convirtiéndolo en un objeto de documento. Luego podemos acceder a las diversas propiedades y métodos disponibles para interactuar con el documento. En el ejemplo, actualizamos el texto del primer párrafo, usando la colección Paragraphs y un índice para especificar cuál párrafo editar. Finalmente, los cambios se guardan con SaveAs, y el documento y la aplicación se cierran adecuadamente.

Alternativa de la biblioteca IronXL a Interop

IronXL es una alternativa a Microsoft Interop que puede usarse en programas .NET para manejar archivos de Excel. Mientras Microsoft Interop requiere interactuar con Excel a través de los ensamblados Interop, IronXL ofrece un método más sencillo, efectivo y potente para manipular archivos de Excel programáticamente en contextos .NET.

Utilizar IronXL en lugar de Microsoft Interop tiene varias ventajas, como:

  • Rendimiento y Eficiencia de Recursos: En comparación con Microsoft Interop, que depende de que la aplicación de Excel esté instalada en la computadora, IronXL tiene un mejor rendimiento y usa menos recursos porque no depende de la aplicación de Excel.
  • Facilidad de Uso y Sencillez: IronXL proporciona una API más fácil de usar que simplifica la lectura, escritura y manipulación de archivos de Excel sin las complicaciones que vienen con Microsoft Interop.
  • Compatibilidad y Dependencia: IronXL elimina las dependencias y problemas de compatibilidad que pueden ocurrir con varias versiones de Excel u Office al no requerir la instalación de Microsoft Excel en la computadora.
  • Independencia de Plataforma: A diferencia de Microsoft Interop, que puede estar más estrechamente asociado con versiones particulares de Microsoft Office, IronXL ofrece mayor flexibilidad y mayor facilidad de implementación a través de varios entornos y plataformas.

Para los desarrolladores .NET que deben operar con archivos de Excel programáticamente, IronXL es frecuentemente una mejor opción debido a su facilidad de uso, velocidad y menor dependencia de instalaciones de software de terceros. La decisión entre IronXL y Microsoft Interop, sin embargo, podría verse influenciada por las especificidades del proyecto, la infraestructura ya existente y el nivel de experiencia del usuario con cada biblioteca.

Cuando decida entre estas opciones, siempre tenga en cuenta los requisitos de su aplicación. Visite este enlace para aprender más sobre la biblioteca IronXL.

Instalación de la biblioteca IronXL

Dado que se necesita la biblioteca IronXL para el próximo parche, instálela. Para terminar esto, abra la consola del Administrador de Paquetes NuGet y escriba el siguiente comando:

Install-Package IronWord

Cómo manipular un documento de Word usando C#: Figura 6 - Instalando IronXL usando el comando de consola

Buscar el paquete "IronXL" a través del Administrador de Paquetes NuGet es una opción adicional. De esta lista de cada paquete NuGet vinculado a IronXL, podemos seleccionar el que necesitamos descargar.

Cómo manipular un documento de Word usando C#: Figura 7 - Instalando el paquete `IronXL.Excel` a través del navegador

Edición de documentos de Excel con IronXL

Los datos se pueden exportar a los formatos XLSX o XLS con solo unas pocas líneas de código. El siguiente ejemplo de código fuente muestra cómo se pueden exportar datos desde un archivo de Excel a un formato de tabla tabular simple:

using IronXL;

class Program
{
    static void Main()
    {
        // Load an existing Excel file
        var workbook = WorkBook.Load("Demo file.xlsx");
        // Access the first sheet or the sheet by name
        var ws = workbook.GetWorkSheet("Sheet1");
        // Read a value from a cell and output it to the console
        string address_val = ws["A1"].ToString();
        Console.WriteLine(address_val);
        // Modify a cell's value
        ws["A2"].Value = "Hello World";
        // Save the workbook to different formats
        workbook.SaveAs("export.xlsx");
        workbook.SaveAs("export.xls");
        workbook.WorkSheets[0].SaveAs("export.xls");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load an existing Excel file
        var workbook = WorkBook.Load("Demo file.xlsx");
        // Access the first sheet or the sheet by name
        var ws = workbook.GetWorkSheet("Sheet1");
        // Read a value from a cell and output it to the console
        string address_val = ws["A1"].ToString();
        Console.WriteLine(address_val);
        // Modify a cell's value
        ws["A2"].Value = "Hello World";
        // Save the workbook to different formats
        workbook.SaveAs("export.xlsx");
        workbook.SaveAs("export.xls");
        workbook.WorkSheets[0].SaveAs("export.xls");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load an existing Excel file
		Dim workbook = WorkBook.Load("Demo file.xlsx")
		' Access the first sheet or the sheet by name
		Dim ws = workbook.GetWorkSheet("Sheet1")
		' Read a value from a cell and output it to the console
		Dim address_val As String = ws("A1").ToString()
		Console.WriteLine(address_val)
		' Modify a cell's value
		ws("A2").Value = "Hello World"
		' Save the workbook to different formats
		workbook.SaveAs("export.xlsx")
		workbook.SaveAs("export.xls")
		workbook.WorkSheets(0).SaveAs("export.xls")
	End Sub
End Class
$vbLabelText   $csharpLabel

El ejemplo anterior carga un archivo de Excel existente llamando a la función Load, que toma un argumento para la ruta y el nombre del archivo. La importación del archivo en el objeto WorkBook ahora está completa. Las hojas de Excel se cargan luego con la ayuda de GetWorkSheet, lo que nos permite cargar la hoja usando el nombre de la hoja. Luego se utilizó la dirección de Excel para leer el valor. Para saber más sobre cómo leer archivos de Excel haga clic aquí.

Podemos alterar los valores de la hoja de Excel utilizando la misma dirección de Excel. El documento de Excel se puede guardar como un archivo XLSX o XLS utilizando la función SaveAs que ofrece el objeto WorkBook. Utilizando este proceso, el archivo completo se guarda en el formato elegido.

Cómo manipular un documento de Word usando C#: Figura 8 - Salida de Consola

Además, podemos elegir una hoja de Excel específica utilizando su valor de índice o refiriéndose a ella por nombre. A continuación, podemos exportar los datos de la hoja de cálculo de Excel a otro archivo usando la opción SaveAs. Haga clic en este enlace para obtener más información sobre el formato y la exportación de archivos de Excel.

Conclusión

Uno de los complementos más populares para Excel es IronXL. No depende de ninguna biblioteca externa adicional. No es necesario instalar Microsoft Excel porque es autónomo. Opera a través de multitud de canales. Esto contrasta con la biblioteca Interop que debe analizar el archivo utilizando bibliotecas adicionales para editar documentos de Word.

Una solución completa para cualquier proceso de programación que utilice documentos de Microsoft Excel es IronXL. Cálculos, ordenación de cadenas o números, poda, adición, búsqueda y reemplazo, fusión y división, y almacenamiento de archivos son solo algunas de las muchas operaciones disponibles. No solo se puede validar los datos de las hojas de cálculo, sino que también se puede construir nuevos formularios de datos de celdas. Facilita la lectura y escritura de archivos así como el manejo de datos de Excel.

Cuando IronXL se lanzó por primera vez, costaba $799. Alternativamente, los clientes pueden optar por pagar una tarifa de suscripción anual para recibir actualizaciones de software y soporte. Por un cargo, IronXL proporciona seguridad contra redistribución no autorizada. Vaya a la página de licencias de IronXL. Para saber más sobre los productos de Iron Software visite aquí.

Preguntas Frecuentes

¿Cómo puedo manipular documentos de Word usando C#?

Para manipular documentos de Word usando C#, puedes usar la biblioteca Microsoft.Office.Interop.Word. Esto implica crear una instancia de la aplicación Word, abrir el documento, hacer cambios y guardar el documento programáticamente.

¿Cuáles son las limitaciones de usar Microsoft Interop para la manipulación de documentos de Word?

Las limitaciones de usar Microsoft Interop incluyen la necesidad de una versión con licencia de Microsoft Word en cada PC cliente, problemas potenciales con la compatibilidad de versiones y un mayor consumo de memoria debido a procesos en segundo plano.

¿Cómo puedo configurar un proyecto de C# en Visual Studio para trabajar con documentos de Word?

En Visual Studio, puedes configurar un nuevo proyecto seleccionando una Aplicación de Consola, configurando los detalles necesarios del proyecto y asegurando que la versión correcta del .NET Framework esté elegida. Luego necesitarás agregar referencias a Microsoft.Office.Interop.Word a través del Administrador de Paquetes NuGet.

¿Cuáles son las diferencias entre IronXL y Microsoft Interop para manejar archivos Excel?

IronXL ofrece ventajas sobre Microsoft Interop, como no requerir la instalación de Excel, proporcionar un mejor rendimiento y tener una API más simple para la manipulación de archivos Excel. También elimina problemas de compatibilidad asociados con el método Interop.

¿Cómo puedo instalar IronXL en mi proyecto .NET?

Para instalar IronXL en tu proyecto .NET, abre la Consola del Administrador de Paquetes NuGet en Visual Studio y ejecuta el comando Install-Package IronXL.Excel. También puedes buscar IronXL en la interfaz de usuario del Administrador de Paquetes NuGet e instalarlo directamente.

¿Cómo edito documentos Excel usando IronXL en C#?

Usando IronXL, puedes editar documentos Excel cargándolos con WorkBook.Load, accediendo a hojas de trabajo específicas, modificando valores de celda y guardando el libro de trabajo usando métodos proporcionados por los objetos WorkBook y WorkSheet.

¿Cuáles son los beneficios de usar IronXL para la manipulación de archivos de Excel?

IronXL proporciona beneficios como mejor rendimiento, facilidad de uso e independencia de plataforma. No requiere la instalación de Excel, lo que elimina problemas de dependencia y permite una integración fluida en aplicaciones .NET.

¿Puedo automatizar tareas de documentos Word sin usar Microsoft Interop?

Sí, varias bibliotecas de terceros ofrecen alternativas a Microsoft Interop para automatizar tareas de documentos Word, ofreciendo APIs más simples y eliminando la necesidad de instalación de Microsoft Word.

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