Saltar al pie de página
USANDO IRONXL

Cómo importar, leer y manipular fácilmente datos de archivos MS Excel en C# usando IronXL

Trabajar con archivos de Microsoft Excel es un requisito diario para muchos desarrolladores .NET. Ya sea para importar datos de clientes, procesar informes financieros o migrar datos de hojas de cálculo o libros de Excel a bases de datos, los desarrolladores necesitan una forma fiable de leer archivos de Excel o exportar archivos de Excel (XLSX) sin dependencias complejas ni necesidad de tener Excel instalado. IronXL ofrece una solución sencilla que funciona en todas las plataformas y elimina la necesidad de instalar Microsoft Office.

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# usando IronXL: Imagen 1 - IronXL

¿Cómo empezar con C# importar datos de Excel?

Comenzar con la importación de Excel en C# toma sólo unos minutos con IronXL. La biblioteca de Excel maneja a la perfección los formatos XLS heredados y XLSX modernos, junto con CSV, TSV y otros formatos de hoja de cálculo. A diferencia de las soluciones que dependen de Microsoft.Office.Interop.Excel, IronXL se ejecuta de forma independiente en cualquier plataforma .NET o .NET Core.

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 2 - Multiplataforma

En primer lugar, instale IronXL a través del gestor de paquetes NuGet o seleccione Administrar paquetes NuGet en Visual Studio:

Install-Package IronXL.Excel

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 3 - Instalación

Una vez instalado, importar datos de Excel resulta extraordinariamente sencillo:

using IronXL;
static void Main(string[] args)
{
 // Load any Excel file
 WorkBook workBook = WorkBook.Load("ProductData.xlsx");
 // Access the first worksheet
 WorkSheet sheet = workBook.WorkSheets[0];
 // Read a cell value
 string value = sheet["B1"].StringValue;
 Console.WriteLine(value);
}
using IronXL;
static void Main(string[] args)
{
 // Load any Excel file
 WorkBook workBook = WorkBook.Load("ProductData.xlsx");
 // Access the first worksheet
 WorkSheet sheet = workBook.WorkSheets[0];
 // Read a cell value
 string value = sheet["B1"].StringValue;
 Console.WriteLine(value);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este código muestra el flujo de trabajo principal: cargar un libro de trabajo, acceder a una hoja de cálculo y leer los valores de las celdas. El método WorkBook.Load() detecta automáticamente el formato del archivo, ya sea XLS, XLSX o incluso CSV. La intuitiva sintaxis del indexador sheet["B1"] hace que acceder a las celdas sea tan natural como trabajar con matrices. Para operaciones más complejas, consulte la Referencia de la API de IronXL para obtener documentación completa.

Entrada de muestra

Cómo Importar, Leer y Manipular Fácilmente Datos de Archivos de MS Excel en C# Usando IronXL: Imagen 4 - Entrada de Excel

Resultado

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 5 - Salida de la consola

¿Cómo puedo leer datos de Excel en objetos C#?

Las aplicaciones reales necesitan algo más que valores unicelulares. IronXL destaca en la importación de conjuntos de datos completos y su conversión en objetos C# utilizables. Cuando necesite importar archivos Excel con datos estructurados, la biblioteca ofrece múltiples enfoques.

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
// Read a range of cells
 var products = new List<Product>();
 foreach (var row in sheet.Rows)
 {
     var product = new Product
     {
         Id = row.Columns[0].IntValue,
         Name = row.Columns[1].StringValue,
         Price = row.Columns[2].DecimalValue,
         IsAvailable = row.Columns[3].BoolValue
     };
     products.Add(product);
 }
 foreach (var product in products)
 {
     Console.WriteLine($"Id: {product.Id}, Name: {product.Name}, Price: {product.Price}, Available: {product.IsAvailable}");
 }
// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
// Read a range of cells
 var products = new List<Product>();
 foreach (var row in sheet.Rows)
 {
     var product = new Product
     {
         Id = row.Columns[0].IntValue,
         Name = row.Columns[1].StringValue,
         Price = row.Columns[2].DecimalValue,
         IsAvailable = row.Columns[3].BoolValue
     };
     products.Add(product);
 }
 foreach (var product in products)
 {
     Console.WriteLine($"Id: {product.Id}, Name: {product.Name}, Price: {product.Price}, Available: {product.IsAvailable}");
 }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este ejemplo muestra cómo iterar por filas y asignar datos de Excel a objetos de C# de tipado fuerte. Las propiedades tipificadas como IntValue, StringValue y DecimalValue gestionan la conversión de tipos automáticamente. Este enfoque elimina el análisis sintáctico manual y reduce los errores al trabajar con diferentes tipos de datos. Muchos desarrolladores en Stack Overflow aprecian este enfoque de tipo seguro para la importación de datos de Excel.

Resultado

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 6 - Salida de objetos

Para un acceso más elegante a los datos, IronXL admite operaciones de rango:

// Read specific ranges of ProductData.xlsx file
Range dataRange = sheet["A1:D5"];
// Calculate aggregates directly
decimal sum = sheet["C1:C5"].Sum();
Console.WriteLine($"Sum of C1:C5: {sum}");
decimal max = sheet["C1:C5"].Max(c => c.DecimalValue);
Console.WriteLine($"Max of C1:C5: {max}");
// Use LINQ for filtering
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();
Console.WriteLine("High value orders (>100):");
// Print the high value orders to the console
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
// Read specific ranges of ProductData.xlsx file
Range dataRange = sheet["A1:D5"];
// Calculate aggregates directly
decimal sum = sheet["C1:C5"].Sum();
Console.WriteLine($"Sum of C1:C5: {sum}");
decimal max = sheet["C1:C5"].Max(c => c.DecimalValue);
Console.WriteLine($"Max of C1:C5: {max}");
// Use LINQ for filtering
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();
Console.WriteLine("High value orders (>100):");
// Print the high value orders to the console
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La clase Range proporciona acceso de tipo colección a varias celdas simultáneamente. La compatibilidad con LINQ permite a los desarrolladores filtrar, transformar y agregar datos de Excel utilizando patrones conocidos de C#. Los métodos de agregación incorporados, como Sum() y Max(), operan directamente en rangos de celdas sin cargar primero todos los datos en la memoria.

Resultado

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 7 - Salida de rango

¿Cómo convierto Excel a DataTable?

La conversión de DataTable es esencial para las operaciones de base de datos y los escenarios de vinculación de datos. IronXL proporciona métodos incorporados que manejan eficientemente la conversión de Excel a DataTable.Esta característica es particularmente útil cuando se necesita importar hojas de cálculo de Excel a SQL Server u otras bases de datos.

using System.Data;
// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select first Excel worksheet
WorkSheet sheet = workBook.WorkSheets.First();
// Convert to DataTable with headers
DataTable dataTable = sheet.ToDataTable(true);
// The DataTable is ready for database operations
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
using System.Data;
// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select first Excel worksheet
WorkSheet sheet = workBook.WorkSheets.First();
// Convert to DataTable with headers
DataTable dataTable = sheet.ToDataTable(true);
// The DataTable is ready for database operations
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El método ToDataTable() acepta un parámetro booleano que indica si la primera fila contiene cabeceras. Cuando se establece en true, IronXL utiliza automáticamente los valores de la primera fila como nombres de columna en la DataTable. Esta DataTable se integra perfectamente con las operaciones ADO.NET, Entity Framework y los controles de enlace de datos. La documentación de Microsoft sobre SqlBulkCopy muestra la eficacia con la que este patrón gestiona las importaciones de datos a gran escala.

Para un mayor control sobre el proceso de conversión:

// Custom DataTable conversion
DataTable customTable = new DataTable();
// Define columns based on Excel structure
for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}
// Import data with validation
foreach (var row in sheet.Rows)
{
    var dataRow = customTable.NewRow();
    for (int col = 0; col < sheet.ColumnCount; col++)
    {
        dataRow[col] = row.Columns[col].Value ?? DBNull.Value;
    }
    customTable.Rows.Add(dataRow);
}
// Print column headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();
// Print each row
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
// Custom DataTable conversion
DataTable customTable = new DataTable();
// Define columns based on Excel structure
for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}
// Import data with validation
foreach (var row in sheet.Rows)
{
    var dataRow = customTable.NewRow();
    for (int col = 0; col < sheet.ColumnCount; col++)
    {
        dataRow[col] = row.Columns[col].Value ?? DBNull.Value;
    }
    customTable.Rows.Add(dataRow);
}
// Print column headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();
// Print each row
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este enfoque ofrece flexibilidad para la transformación de datos durante la importación. Los valores nulos se tratan con elegancia convirtiéndolos a DBNull.Value, lo que garantiza la compatibilidad con las operaciones de base de datos.

Resultado

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 8 - Salida de DataTable

¿Qué funciones avanzadas admiten la manipulación de datos?

IronXL va más allá de la lectura básica con potentes funciones para escenarios complejos. La biblioteca conserva las fórmulas de Excel, lo que permite que los cálculos se actualicen dinámicamente. Para los desarrolladores que trabajan con complejos libros de Excel, esto mantiene la integridad de los datos durante todo el proceso de importación.

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# con IronXL: Imagen 9 - Características

// Read calculated values from formulas
WorkSheet sheet = workBook.GetWorkSheet("Reports");
decimal calculatedTotal = sheet["E10"].DecimalValue; // Reads formula result
// Formulas remain intact
string formula = sheet["E10"].Formula; // Returns "=SUM(E2:E9)"
// Read calculated values from formulas
WorkSheet sheet = workBook.GetWorkSheet("Reports");
decimal calculatedTotal = sheet["E10"].DecimalValue; // Reads formula result
// Formulas remain intact
string formula = sheet["E10"].Formula; // Returns "=SUM(E2:E9)"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La compatibilidad con fórmulas significa que la importación de archivos de Excel con cálculos complejos funciona sin recrear la lógica empresarial. La biblioteca evalúa las fórmulas automáticamente y devuelve los valores calculados conservando la estructura original de la fórmula. Esta función resulta inestimable cuando se necesita leer archivos Excel que contienen modelos financieros o plantillas de informes.

La compatibilidad entre plataformas garantiza un comportamiento coherente en entornos Windows, Linux, macOS y contenedores. Esta flexibilidad hace que IronXL sea ideal para implementaciones en la nube y arquitecturas de microservicios en las que la instalación de Office no es factible. La documentación de la Fundación .NET destaca cómo las aplicaciones .NET modernas se benefician de esta independencia de plataforma al importar datos de Excel.

La integración de Entity Framework agiliza los flujos de trabajo de la base de datos para escenarios de importación de Excel en C#:

var products = sheet.Rows.Skip(1)
    .Select(row => new Product
    {
        Name = row.Columns[0].StringValue,
        Price = row.Columns[1].DecimalValue
    })
    .ToList();
using (var context = new AppDbContext())
{
    context.Products.AddRange(products);
    await context.SaveChangesAsync();
}
var products = sheet.Rows.Skip(1)
    .Select(row => new Product
    {
        Name = row.Columns[0].StringValue,
        Price = row.Columns[1].DecimalValue
    })
    .ToList();
using (var context = new AppDbContext())
{
    context.Products.AddRange(products);
    await context.SaveChangesAsync();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este patrón permite canalizaciones directas de Excel a bases de datos con un código mínimo, perfecto para procesos de migración de datos y ETL. Si desea obtener funciones completas de manipulación de Excel, descargue IronXL para agilizar sus flujos de trabajo de importación de datos.

Conclusión

IronXL transforma la importación de datos de Excel de un reto complejo a un código C# sencillo. La API intuitiva de la biblioteca, su amplia compatibilidad de formatos y su compatibilidad multiplataforma la convierten en la opción más práctica para las aplicaciones de producción que requieren la manipulación de archivos de Excel.

Cómo importar, leer y manipular fácilmente datos de archivos de MS Excel en C# utilizando IronXL: Imagen 10 - Licencias

¿Listo para importar archivos Excel en tus proyectos de C#? Inicie su prueba gratuita para explorar todas las capacidades de IronXL. Para obtener una guía de implementación detallada, visite la documentación completa o explore más tutoriales de Excel para escenarios avanzados. Para implantaciones de producción, consulte las opciones de licencia para encontrar la más adecuada para su equipo.

Preguntas Frecuentes

¿Cómo puedo importar datos de Excel en C#?

Puedes utilizar IronXL para importar datos de Excel en C# fácilmente, sin necesidad de tener Microsoft Excel instalado en tu sistema.

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

IronXL permite a los desarrolladores leer, escribir y manipular archivos de Excel en C# sin dependencias complejas, y funciona en diferentes plataformas.

¿Necesito tener instalado Microsoft Office para usar IronXL?

No, IronXL elimina la necesidad de instalar Microsoft Office, lo que le permite trabajar con archivos de Excel directamente dentro de sus aplicaciones de C#.

¿Puede IronXL manejar los formatos de archivo XLSX y CSV?

Sí, IronXL es compatible con varios formatos de archivo de Excel, incluidos XLSX y CSV, lo que lo hace versátil para diferentes necesidades de procesamiento de datos.

¿Es IronXL adecuado para procesar grandes archivos de Excel?

Sí, IronXL está diseñado para gestionar de forma eficiente archivos de Excel de gran tamaño, lo que permite a los desarrolladores procesar grandes conjuntos de datos sin problemas de rendimiento.

¿Con qué plataformas es compatible IronXL?

IronXL es compatible con múltiples plataformas, lo que permite el desarrollo multiplataforma y el despliegue de aplicaciones que manejan archivos de Excel.

¿Cómo simplifica IronXL la migración de datos de Excel a bases de datos?

IronXL ofrece métodos sencillos para leer y exportar datos desde hojas de Excel, lo que facilita la transferencia de datos a bases de datos sin necesidad de una codificación compleja.

¿Puedo utilizar IronXL para automatizar la generación de informes de Excel?

Sí, IronXL permite la automatización de la generación de informes de Excel, lo que le permite crear y manipular archivos de Excel mediante programación en C#.

¿Es IronXL adecuado tanto para aplicaciones a pequeña escala como a nivel empresarial?

IronXL es versátil y escalable, por lo que resulta adecuado tanto para proyectos a pequeña escala como para grandes aplicaciones empresariales que requieran la manipulación de archivos de Excel.

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