Saltar al pie de página
USANDO IRONXL

Cómo abrir un archivo de Excel y escribir datos en C#

Este artículo explorará la biblioteca IronXL para demostrar cómo abrir un archivo de Microsoft Excel y escribir datos en él en una aplicación de consola C#.

IronXL - Una biblioteca de Excel

IronXL es una biblioteca de Excel para .NET que facilita la creación, lectura y edición de archivos Excel en aplicaciones C#. Ofrece un rendimiento excepcional y una salida precisa. La biblioteca admite todos los formatos de archivos de libro de trabajo de Excel, incluidos XLS, XLSX, XLSM, CSV y TSV. Además, permite guardar o exportar datos en formatos como JSON, HTML, Binary, Byte Array, DataSet o DataTable.

Con IronXL, los desarrolladores pueden trabajar con hojas de cálculo y rangos de celdas sin problemas. Ofrece la capacidad de editar fórmulas y recalcularlas fácilmente dentro de una hoja. Ordenar datos basado en rango, columna o fila es sencillo. La biblioteca proporciona funciones para modificar diseños, como congelar paneles, ajustar automáticamente filas/columnas, y agregar/eliminar filas/columnas.

IronXL también permite la protección de archivos Excel con contraseñas de usuario y permisos para editar. Otra característica notable es la capacidad de agregar, eliminar y extraer imágenes de hojas de cálculo de Excel. La biblioteca ofrece una amplia gama de funciones de Excel, admitiendo varios formatos de datos de celda. Estas características hacen de IronXL una de las APIs más amigables para trabajar con Excel.

Una de las ventajas significativas de IronXL es que no requiere que Microsoft Excel esté instalado en la máquina, eliminando la necesidad de Interop de Office o cualquier otra dependencia. Es compatible con múltiples plataformas y admite .NET 7, 6 y 5. También es compatible con .NET Core 2 y 3, así como con .NET Framework 4.5 y versiones posteriores para trabajar con hojas de cálculo de Excel.

Crear una aplicación de consola

Se recomienda la última versión de Visual Studio IDE para crear la aplicación. Visual Studio es el IDE oficial para el desarrollo en C#, y se asume que ya lo ha instalado. Si no ha instalado Visual Studio, puede descargarlo desde el sitio web oficial de Microsoft Visual Studio.

Siga estos pasos para crear un nuevo proyecto llamado "DemoApp".

  1. Abra Visual Studio y haga clic en Crear un nuevo proyecto

Cómo abrir un archivo Excel y escribir datos en C#, Figura 1: Nuevo proyecto Nuevo Proyecto

  1. Seleccione Aplicación de consola y haga clic en Siguiente

Cómo abrir un archivo Excel y escribir datos en C#, Figura 2: Tipo de nuevo proyecto Tipo de nuevo proyecto

  1. Ingrese el nombre del Proyecto

Cómo abrir un archivo Excel y escribir datos en C#, Figura 3: Nombre del nuevo proyecto Nombre del nuevo proyecto

  1. Selecciona la versión de .NET. Elige la versión estable .NET 6.0.

Cómo abrir un archivo Excel y escribir datos en C#, Figura 4: Información adicional del nuevo proyecto Información adicional del nuevo proyecto

Instalar la biblioteca IronXL

Una vez creado el proyecto, se necesita instalar la biblioteca IronXL en el proyecto para usarla. Sigue estos pasos para instalarla.

  1. Abra Administrar paquetes NuGet para soluciones ya sea desde el Explorador de soluciones o Herramientas.

Cómo abrir un archivo Excel y escribir datos en C#, Figura 5: Administrador de paquetes NuGet Administrador de Paquetes NuGet

  1. Busque la Biblioteca IronXL y seleccione el proyecto actual. Haz clic en instalar.

Cómo abrir un archivo Excel y escribir datos en C#, Figura 6: Buscar e instalar el paquete IronXL en la interfaz del Administrador de paquetes NuGet Buscar e instalar el paquete IronXL en la interfaz de usuario del administrador de paquetes NuGet

Agregue el siguiente espacio de nombres en la parte superior del archivo Program.cs

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

Abrir un archivo de Excel existente en C

IronXL proporciona la facilidad de abrir un archivo Excel existente o puede crear un nuevo archivo Excel. Este ejemplo abrirá un archivo existente usando C# IronXL.

// Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
' Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
$vbLabelText   $csharpLabel

Ahora, seleccionemos su primera hoja de cálculo. Puede seleccionar una hoja de cálculo por número de índice o por nombre. La propiedad DefaultWorkSheet puede ayudar a obtener la primera hoja.

// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];

// Select worksheet by name 
WorkSheet ws = workBook.GetWorkSheet("Sheet1"); 

// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];

// Select worksheet by name 
WorkSheet ws = workBook.GetWorkSheet("Sheet1"); 

// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
' Select worksheet at index 0
Dim workSheet As WorkSheet = workBook.WorkSheets(0)

' Select worksheet by name 
Dim ws As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Get any existing worksheet
Dim firstSheet As WorkSheet = workBook.DefaultWorkSheet
$vbLabelText   $csharpLabel

El código anterior obtiene la primera hoja del libro de trabajo de Excel. Para crear un nuevo archivo Excel con datos, consulte esta página de ejemplo de código.

Ahora, escribamos datos en el archivo Excel usando la biblioteca de objetos IronXL.

Escribir datos en un archivo de Excel en C

Escribir datos en un archivo Excel utilizando IronXL es muy fácil. Hay múltiples formas de lograrlo, pero el método más simple es usar la referencia de celda de Excel.

// Access A1 cell and write the value
workSheet["A1"].Value = "Value using cell reference";
// Access A1 cell and write the value
workSheet["A1"].Value = "Value using cell reference";
' Access A1 cell and write the value
workSheet("A1").Value = "Value using cell reference"
$vbLabelText   $csharpLabel

También es posible escribir datos en un rango de celdas. El siguiente código escribe datos desde la celda B1 a B5.

// Write the same value to cells from B1 to B5
workSheet["B1:B5"].Value = "Range value";
// Write the same value to cells from B1 to B5
workSheet["B1:B5"].Value = "Range value";
' Write the same value to cells from B1 to B5
workSheet("B1:B5").Value = "Range value"
$vbLabelText   $csharpLabel

También podemos llenar el rango con un bucle for, haciéndolo dinámico. El código es el siguiente:

// Specify range in which we want to write the values
for (int i = 1; i <= 5; i++)
{
    // Write the Dynamic value in column C
    workSheet["C" + i].Value = "Value: " + i;

    // Write the Dynamic value in column D
    workSheet["D" + i].Value = "Value: " + i;
}
// Specify range in which we want to write the values
for (int i = 1; i <= 5; i++)
{
    // Write the Dynamic value in column C
    workSheet["C" + i].Value = "Value: " + i;

    // Write the Dynamic value in column D
    workSheet["D" + i].Value = "Value: " + i;
}
' Specify range in which we want to write the values
For i As Integer = 1 To 5
	' Write the Dynamic value in column C
	workSheet("C" & i).Value = "Value: " & i

	' Write the Dynamic value in column D
	workSheet("D" & i).Value = "Value: " & i
Next i
$vbLabelText   $csharpLabel

Otra forma de escribir datos en un archivo Excel es utilizando el método Replace.

// Replace the value in cell D5
workSheet["D5"].Replace("Value: 5", "Replaced Value");
// Replace the value in cell D5
workSheet["D5"].Replace("Value: 5", "Replaced Value");
' Replace the value in cell D5
workSheet("D5").Replace("Value: 5", "Replaced Value")
$vbLabelText   $csharpLabel

Guardar un archivo de Excel en C

Esta sección explica cómo guardar el archivo Excel con el contenido recién escrito en él.

// Save the updated Excel workbook to a file
workBook.SaveAs("sample.xlsx");
// Save the updated Excel workbook to a file
workBook.SaveAs("sample.xlsx");
' Save the updated Excel workbook to a file
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

El código completo es el siguiente:

using System;
using IronXL;

class Program
{
    static void Main(string[] args)
    {
        // Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Select worksheet at index 0
        WorkSheet workSheet = workBook.WorkSheets[0];

        // Access A1 cell and write the value
        workSheet["A1"].Value = "Value using cell reference";

        // Write the same value to cells from B1 to B5
        workSheet["B1:B5"].Value = "Range value";

        // Specify range in which we want to write the values
        for (int i = 1; i <= 5; i++)
        {
            // Write the Dynamic value in column C
            workSheet["C" + i].Value = "Value: " + i;

            // Write the Dynamic value in column D
            workSheet["D" + i].Value = "Value: " + i;
        }

        // Replace the value in cell D5
        workSheet["D5"].Replace("Value: 5", "Replaced Value");

        // Save the updated Excel workbook to a file
        workBook.SaveAs("sample.xlsx");
        Console.WriteLine("Successfully written to Excel File");
    }
}
using System;
using IronXL;

class Program
{
    static void Main(string[] args)
    {
        // Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Select worksheet at index 0
        WorkSheet workSheet = workBook.WorkSheets[0];

        // Access A1 cell and write the value
        workSheet["A1"].Value = "Value using cell reference";

        // Write the same value to cells from B1 to B5
        workSheet["B1:B5"].Value = "Range value";

        // Specify range in which we want to write the values
        for (int i = 1; i <= 5; i++)
        {
            // Write the Dynamic value in column C
            workSheet["C" + i].Value = "Value: " + i;

            // Write the Dynamic value in column D
            workSheet["D" + i].Value = "Value: " + i;
        }

        // Replace the value in cell D5
        workSheet["D5"].Replace("Value: 5", "Replaced Value");

        // Save the updated Excel workbook to a file
        workBook.SaveAs("sample.xlsx");
        Console.WriteLine("Successfully written to Excel File");
    }
}
Imports System
Imports IronXL

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
		Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

		' Select worksheet at index 0
		Dim workSheet As WorkSheet = workBook.WorkSheets(0)

		' Access A1 cell and write the value
		workSheet("A1").Value = "Value using cell reference"

		' Write the same value to cells from B1 to B5
		workSheet("B1:B5").Value = "Range value"

		' Specify range in which we want to write the values
		For i As Integer = 1 To 5
			' Write the Dynamic value in column C
			workSheet("C" & i).Value = "Value: " & i

			' Write the Dynamic value in column D
			workSheet("D" & i).Value = "Value: " & i
		Next i

		' Replace the value in cell D5
		workSheet("D5").Replace("Value: 5", "Replaced Value")

		' Save the updated Excel workbook to a file
		workBook.SaveAs("sample.xlsx")
		Console.WriteLine("Successfully written to Excel File")
	End Sub
End Class
$vbLabelText   $csharpLabel

Para obtener información más detallada sobre cómo leer datos de archivos Excel en C#, eche un vistazo a este ejemplo.

Producción

La salida del archivo es:

Cómo abrir un archivo Excel y escribir datos en C#, Figura 7: El archivo Excel de salida El archivo Excel de salida

Resumen

Este artículo demostró cómo escribir datos en archivos Excel en C# usando IronXL. IronXL proporciona la facilidad de trabajar con archivos Excel existentes sin ningún problema. También le permite crear nuevos archivos Excel y escribir datos en él con una sintaxis sencilla. IronXL también se puede usar para leer archivos Excel sin tener instalada la aplicación Microsoft Excel. Para leer datos de archivos Excel puede ver esta página de ejemplo de código.

IronXL es gratuito para el desarrollo y se puede licenciar para uso comercial. También puede probar la prueba gratuita de IronXL para uso comercial.

Preguntas Frecuentes

¿Cómo puedo abrir un archivo de Excel en C# sin usar Interop?

Puedes abrir un archivo de Excel en C# sin usar Interop utilizando la biblioteca IronXL. IronXL te permite manejar los archivos de Excel de manera eficiente sin la necesidad de instalación de Microsoft Excel, mejorando el rendimiento y la compatibilidad.

¿Cómo escribo datos en una celda específica en un archivo de Excel usando C#?

Usando IronXL, puedes escribir datos en una celda específica en un archivo de Excel accediendo al libro de trabajo, seleccionando la hoja de trabajo y luego utilizando referencias de celdas para asignar valores a las celdas deseadas.

¿Cuáles son las ventajas de usar IronXL sobre Office Interop para la manipulación de archivos de Excel?

IronXL ofrece varias ventajas sobre Office Interop, incluyendo la ausencia de dependencia de instalación de Microsoft Excel, mejor rendimiento, compatibilidad multiplataforma y soporte para varios formatos de archivos de Excel como XLS, XLSX y CSV.

¿Puedo editar fórmulas en archivos de Excel usando esta biblioteca?

Sí, IronXL te permite editar fórmulas en archivos de Excel. Puedes manipular fórmulas existentes o insertar nuevas usando una sintaxis sencilla, que la biblioteca procesa eficientemente.

¿Cómo soporta IronXL diferentes formatos de archivos Excel?

IronXL soporta múltiples formatos de archivo de Excel como XLS, XLSX, XLSM, CSV y TSV, lo que te permite crear, leer y editar estos archivos sin problemas en una aplicación de C#.

¿Es posible proteger un archivo de Excel usando IronXL?

Sí, IronXL proporciona funcionalidad para proteger archivos de Excel configurando contraseñas de usuario y permisos, garantizando la seguridad de los datos y el acceso controlado.

¿Cómo puedo integrar la biblioteca IronXL en mi proyecto de C#?

Para integrar IronXL en tu proyecto de C#, puedes usar el Administrador de Paquetes NuGet en Visual Studio. Busca IronXL y agrégalo a tu proyecto para comenzar a usar sus características.

¿Qué plataformas son compatibles con IronXL?

IronXL soporta múltiples plataformas, incluyendo .NET 5, 6 y 7, así como .NET Core y Framework, siendo una opción versátil para diversos entornos de desarrollo.

¿Puedo usar IronXL de forma gratuita?

IronXL es gratuito para propósitos de desarrollo. Sin embargo, para uso comercial se requiere una licencia. Hay una prueba gratuita disponible para probar las características de la biblioteca en un entorno comercial.

¿Cómo puedo exportar datos de Excel a JSON usando IronXL?

IronXL te permite exportar datos de Excel a formato JSON convirtiendo la hoja de trabajo o rangos de datos específicos en cadenas JSON, que luego pueden ser usadas en aplicaciones que requieran datos en JSON.

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