Cómo usar Excel Interop en C# de manera alternativa

Solución alternativa de interoperabilidad con Excel en C

This article was translated from English: Does it need improvement?
Translated
View the article in English

Muchos proyectos utilizan Excel para comunicarse claramente, pero si estás usando Microsoft.Office.Interop.Excel, es probable que hayas tenido que enfrentar muchas líneas de código complicadas. En este tutorial, utilizaremos IronXL como solución alternativa a la interoperabilidad de Excel en C#, para que no tengas que utilizar la interoperabilidad para terminar tu proyecto. Puedes utilizar datos de archivos de Excel, crear archivos de Excel, editar y manipular todo usando programación en C#.

C# Excel sin interoperabilidad

  • Descargar la biblioteca de Excel sin interoperabilidad
  • Acceder a un archivo de Excel en C#
  • Cree un nuevo archivo de Excel e inserte datos mediante programación
  • Modificar archivos existentes, actualizar y reemplazar valores de celdas, eliminar filas y más
How To Work related to Solución alternativa de interoperabilidad con Excel en C

Cómo utilizar la interoperabilidad de Excel de forma alternativa

  1. Instala una biblioteca de Excel para procesar archivos de Excel.
  2. Abre el Workbook y agrega el archivo Excel actual.
  3. Establece la hoja de trabajo predeterminada.
  4. Lee el valor del libro de Excel.
  5. Procesa y muestra el valor.

Paso 1

1. Descargar la biblioteca IronXL

Descargar biblioteca IronXL o instalar con NuGet para acceder a la biblioteca gratuita y luego seguir paso a paso para trabajar en este tutorial sobre el uso de Excel sin interoperabilidad. Licencias disponibles si deseas publicar tu proyecto en vivo.

Install-Package IronXL.Excel

Tutorial de cómo hacerlo

2. Acceder a los datos del archivo de Excel

Para desarrollar aplicaciones comerciales, necesitamos acceso fácil y perfecto a los datos de archivos de Excel y la capacidad de manipularlos programáticamente según una variedad de requisitos. Con IronXL, utiliza la función WorkBook.Load(), que otorga acceso para leer un archivo Excel específico.

Después de acceder al WorkBook, puedes elegir una hoja de trabajo específica utilizando la función WorkBook.GetWorkSheet(). Ahora tienes todos los datos del archivo Excel disponibles. Consulta el siguiente ejemplo sobre cómo utilizamos estas funciones para obtener datos de archivos de Excel en un proyecto C#.

// Import the IronXL library to access its functionality
using IronXL;

static void Main(string[] args)
{
    // Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    // Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Get a specific cell value, convert it to a string, and print it
    string a = ws["A5"].Value.ToString();
    Console.WriteLine("Getting Single Value:\n\n   Value of Cell A5: {0}", a);

    Console.WriteLine("\nGetting Many Cells Value using Loop:\n");
    // Get multiple cell values using range function and iterate through them
    foreach (var cell in ws["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }

    Console.ReadKey(); // Pause the console to view output
}
// Import the IronXL library to access its functionality
using IronXL;

static void Main(string[] args)
{
    // Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    // Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Get a specific cell value, convert it to a string, and print it
    string a = ws["A5"].Value.ToString();
    Console.WriteLine("Getting Single Value:\n\n   Value of Cell A5: {0}", a);

    Console.WriteLine("\nGetting Many Cells Value using Loop:\n");
    // Get multiple cell values using range function and iterate through them
    foreach (var cell in ws["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }

    Console.ReadKey(); // Pause the console to view output
}
' Import the IronXL library to access its functionality
Imports Microsoft.VisualBasic
Imports IronXL

Shared Sub Main(ByVal args() As String)
	' Access Excel file
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	' Access WorkSheet of Excel file
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")

	' Get a specific cell value, convert it to a string, and print it
	Dim a As String = ws("A5").Value.ToString()
	Console.WriteLine("Getting Single Value:" & vbLf & vbLf & "   Value of Cell A5: {0}", a)

	Console.WriteLine(vbLf & "Getting Many Cells Value using Loop:" & vbLf)
	' Get multiple cell values using range function and iterate through them
	For Each cell In ws("B2:B10")
		Console.WriteLine("   Value is: {0}", cell.Text)
	Next cell

	Console.ReadKey() ' Pause the console to view output
End Sub
$vbLabelText   $csharpLabel

Este código producirá el siguiente resultado:

1output related to 2. Acceder a los datos del archivo de Excel

Con el archivo de Excel luciendo así:

1excel related to 2. Acceder a los datos del archivo de Excel

Podemos ver que nuestro archivo de Excel, sample.xlsx, tiene small business en la celda A5. Los otros valores de B2 a B10 son los mismos y se muestran en el resultado.

Conjuntos de datos y tablas de datos

También podemos trabajar con archivos de Excel como un dataset y datatables utilizando estas instrucciones.

// Access WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Convert workbook to DataSet
DataSet ds = wb.ToDataSet();

// Convert worksheet to DataTable
DataTable dt = ws.ToDataTable(true);
// Access WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Convert workbook to DataSet
DataSet ds = wb.ToDataSet();

// Convert worksheet to DataTable
DataTable dt = ws.ToDataTable(true);
' Access WorkBook and WorkSheet
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")

' Convert workbook to DataSet
Dim ds As DataSet = wb.ToDataSet()

' Convert worksheet to DataTable
Dim dt As DataTable = ws.ToDataTable(True)
$vbLabelText   $csharpLabel

Puedes leer más sobre cómo trabajar con Excel DataSet y DataTables, que proporciona más ejemplos de código y explicaciones sobre el proceso.

Ahora, veremos otro aspecto, que es sobre la creación de un nuevo archivo Excel en nuestro proyecto C#.


3. Crear nuevo archivo de Excel

Podemos crear fácilmente una nueva hoja de cálculo de Excel e insertar datos en ella programáticamente en nuestro proyecto C#. Para lograr esto, IronXL proporciona la función WorkBook.Create(), que crea un nuevo archivo Excel.

Podemos luego crear tantas hojas de trabajo como sea necesario usando la función WorkBook.CreateWorkSheet().

Después de eso, también podemos insertar datos, como se muestra en el ejemplo a continuación:

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Create a new WorkBook
    WorkBook wb = WorkBook.Create();

    // Create a new WorkSheet in the workbook
    WorkSheet ws = wb.CreateWorkSheet("sheet1");

    // Insert data into cells
    ws["A1"].Value = "New Value A1";
    ws["B2"].Value = "New Value B2";

    // Save the newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Create a new WorkBook
    WorkBook wb = WorkBook.Create();

    // Create a new WorkSheet in the workbook
    WorkSheet ws = wb.CreateWorkSheet("sheet1");

    // Insert data into cells
    ws["A1"].Value = "New Value A1";
    ws["B2"].Value = "New Value B2";

    // Save the newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
' Import the IronXL library
Imports IronXL

Shared Sub Main(ByVal args() As String)
	' Create a new WorkBook
	Dim wb As WorkBook = WorkBook.Create()

	' Create a new WorkSheet in the workbook
	Dim ws As WorkSheet = wb.CreateWorkSheet("sheet1")

	' Insert data into cells
	ws("A1").Value = "New Value A1"
	ws("B2").Value = "New Value B2"

	' Save the newly created Excel file
	wb.SaveAs("NewExcelFile.xlsx")
End Sub
$vbLabelText   $csharpLabel

El código anterior creará un nuevo archivo Excel con el nombre NewExcelFile.xlsx, e insertará nuevos datos en las direcciones de celda A1 y B2 con los valores New Value A1 y New Value B2 respectivamente. Con esta configuración, puedes insertar datos de la misma manera, tanto como necesites.

Nota: Si estás creando un nuevo archivo Excel o modificando uno existente, no olvides guardar el archivo como se muestra en el ejemplo anterior.

Profundiza más en cómo Crear nuevas hojas de cálculo Excel usando C# y prueba el código en tu proyecto.


4. Modificar el archivo de Excel existente

Podemos modificar archivos Excel existentes e insertar datos actualizados en ellos programáticamente. En las modificaciones de archivos Excel, veremos los siguientes aspectos:

  • Actualizar el valor de la celda
  • Reemplazar valores antiguos por nuevos
  • Eliminar filas o columnas

Veamos cómo implementar los temas anteriores en nuestro proyecto C#.

Actualizar el valor de la celda

Es muy simple actualizar el valor de la celda de una hoja de cálculo de Excel existente. Solo accede al archivo Excel en el proyecto y especifica su hoja de trabajo, luego actualiza sus datos como se muestra en el ejemplo a continuación:

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Update A3 cell value
    ws["A3"].Value = "New Value of A3";

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Update A3 cell value
    ws["A3"].Value = "New Value of A3";

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
' Import the IronXL library
Imports IronXL

Shared Sub Main(ByVal args() As String)
	' Access the WorkBook and WorkSheet
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")

	' Update A3 cell value
	ws("A3").Value = "New Value of A3"

	' Save the updated Excel file
	wb.SaveAs("sample.xlsx")
End Sub
$vbLabelText   $csharpLabel

El código anterior actualizará el valor de la celda A3 con New Value of A3.

También podemos actualizar múltiples celdas con un valor estático, utilizando la función de rango:

ws["A3:C3"].Value = "New Value";
ws["A3:C3"].Value = "New Value";
ws("A3:C3").Value = "New Value"
$vbLabelText   $csharpLabel

Esto actualizará el número de fila 3 desde celdas A3 a C3 con el New Value en el archivo Excel.

Aprende más sobre cómo utilizar la Función de Rango en C# con estos ejemplos.

Reemplazar valores de celda

Una de las fortalezas de IronXL es su capacidad para reemplazar fácilmente valores antiguos por valores nuevos en archivos Excel existentes, cubriendo todos los siguientes aspectos:

  • Reemplazar valores de una hoja de trabajo completa:
ws.Replace("old value", "new value");
ws.Replace("old value", "new value");
ws.Replace("old value", "new value")
$vbLabelText   $csharpLabel
  • Reemplazar valores de una fila específica:
ws.Rows[RowIndex].Replace("old value", "new value");
ws.Rows[RowIndex].Replace("old value", "new value");
ws.Rows(RowIndex).Replace("old value", "new value")
$vbLabelText   $csharpLabel
  • Reemplazar valores de una columna específica:
ws.Columns[ColumnIndex].Replace("old value", "new Value");
ws.Columns[ColumnIndex].Replace("old value", "new Value");
ws.Columns(ColumnIndex).Replace("old value", "new Value")
$vbLabelText   $csharpLabel
  • Reemplazar valores en un rango específico:
ws["From:To"].Replace("old value", "new value");
ws["From:To"].Replace("old value", "new value");
ws("From:To").Replace("old value", "new value")
$vbLabelText   $csharpLabel

Veamos un ejemplo para ver claramente cómo usar las funciones anteriores en nuestro proyecto C# para reemplazar los valores. En este ejemplo, usaremos la función de reemplazo para reemplazar un valor en un rango específico.

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Specify a range from B5 to G5 and replace "Normal" value with "Good"
    ws["B5:G5"].Replace("Normal", "Good");

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Specify a range from B5 to G5 and replace "Normal" value with "Good"
    ws["B5:G5"].Replace("Normal", "Good");

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
' Import the IronXL library
Imports IronXL

Shared Sub Main(ByVal args() As String)
	' Access the WorkBook and WorkSheet
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")

	' Specify a range from B5 to G5 and replace "Normal" value with "Good"
	ws("B5:G5").Replace("Normal", "Good")

	' Save the updated Excel file
	wb.SaveAs("sample.xlsx")
End Sub
$vbLabelText   $csharpLabel

El código anterior reemplazará el valor Normal con Good de B5 a G5, y el resto de la hoja de trabajo permanece igual. Obtenga más información sobre cómo Editar Valores de Celdas de Excel en un Rango utilizando esta función de IronXL.

Eliminar filas de un archivo de Excel

En el desarrollo de aplicaciones, a veces necesitamos eliminar filas completas de archivos Excel existentes programáticamente. Para esta tarea, usamos la función Remove() de IronXL. Aquí hay un ejemplo:

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Remove the row number 2
    ws.Rows[2].Remove();

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Remove the row number 2
    ws.Rows[2].Remove();

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
' Import the IronXL library
Imports IronXL

Shared Sub Main(ByVal args() As String)
	' Access the WorkBook and WorkSheet
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")

	' Remove the row number 2
	ws.Rows(2).Remove()

	' Save the updated Excel file
	wb.SaveAs("sample.xlsx")
End Sub
$vbLabelText   $csharpLabel

El código anterior eliminará la fila número 2 de sample.xlsx.


Tutorial de acceso rápido

Referencia IronXL

Lea la Referencia de API de IronXL para obtener más información sobre todas las funciones, características, clases y espacios de nombres.

Referencia IronXL
Documentation related to Tutorial de acceso rápido

Preguntas Frecuentes

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

Puedes usar IronXL para leer archivos de Excel en C# sin requerir Interop. Carga el archivo usando la función WorkBook.Load() y accede a la hoja de trabajo con WorkBook.GetWorkSheet().

¿Cuál es el proceso para crear un nuevo archivo de Excel programáticamente en C#?

Con IronXL, puedes crear un nuevo archivo de Excel usando el método WorkBook.Create() y luego agregarle datos usando WorkSheet.CreateWorkSheet().

¿Es posible modificar archivos de Excel en C# sin usar Interop?

Sí, IronXL proporciona la capacidad de modificar archivos de Excel sin Interop actualizando los valores de las celdas, reemplazando valores antiguos y eliminando filas o columnas directamente.

¿Cómo actualizo un valor específico de celda en una hoja de Excel usando IronXL?

Para actualizar un valor de celda, carga tu hoja de trabajo usando WorkBook.GetWorkSheet(), asigna un nuevo valor a la celda y luego guarda tus cambios.

¿Puedo reemplazar valores en un rango de celdas usando IronXL?

IronXL te permite reemplazar valores en un rango usando la función Replace() en una hoja de trabajo o un objeto de rango específico.

¿Cuáles son las ventajas de usar IronXL sobre Microsoft.Office.Interop.Excel?

IronXL simplifica la manipulación de archivos de Excel proporcionando una API fácil de usar, reduciendo la necesidad de código complejo de Interop y ofreciendo mejor rendimiento y confiabilidad.

¿Cómo puedo eliminar una fila de un archivo de Excel usando IronXL?

Para eliminar una fila en IronXL, usa la función Remove() en el objeto de fila especificado dentro de la hoja de trabajo.

¿IronXL admite la conversión de archivos de Excel a DataSets y DataTables?

Sí, IronXL admite la conversión de libros a DataSets y hojas de trabajo a DataTables, permitiendo una manipulación de datos más flexible.

¿Cómo instalo IronXL en un proyecto C#?

Puedes instalar IronXL en tu proyecto C# descargándolo desde el sitio web de Iron Software o usando el gestor de paquetes NuGet con el comando: Install-Package IronXL.Excel.

¿Es IronXL adecuado para archivos Excel grandes?

IronXL está optimizado para manejar archivos grandes de Excel de manera eficiente, ofreciendo altas velocidades de procesamiento y un uso mínimo de memoria en comparación con los métodos tradicionales de Interop.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 1,738,553 | Version: 2025.11 recién lanzado