Saltar al pie de página
USANDO IRONXL

Cómo importar datos de Excel en C# usando IronXL

Trabajar con archivos de Microsoft Excel es un requisito diario para muchos desarrolladores .NET. Ya sea que importen datos de clientes, procesen informes financieros o migren datos de hojas de cálculo a bases de datos, los desarrolladores necesitan una forma confiable de leer archivos de Excel sin dependencias complejas ni necesidad de instalar Excel. Los enfoques tradicionales, como la automatización COM a través de Microsoft.Office.Interop, requieren una instalación completa de Office, introducen restricciones de plataforma y crean dependencias de implementación frágiles. IronXL ofrece una solución sencilla que funciona en todas las plataformas, eliminando todos esos problemas y permitiendo operaciones de Excel directamente desde el código .NET administrado.

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

¿Cómo instalar IronXL y comenzar a importar Excel?

Comenzar con la importación de Excel en C# toma sólo unos minutos con IronXL. La biblioteca de Excel maneja formatos XLS heredados y XLSX modernos, junto con CSV , TSV y otros formatos de hojas 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# usando IronXL: Imagen 2 - Multiplataforma

Instale IronXL a través del Administrador de paquetes NuGet o la CLI de .NET . También puede utilizar el cuadro de diálogo Administrar paquetes NuGet en Visual Studio y buscar "IronXL":

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

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

Para obtener detalles completos de la instalación, incluidas las notas de compatibilidad de versiones y dependencias, consulte la guía de instalación de IronXL NuGet . No se requieren dependencias de tiempo de ejecución adicionales ni componentes de Office: el paquete es autónomo. Una vez instalado el paquete, importar datos de Excel es sencillo:

using IronXL;

// 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;

// 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);
$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 CSV. La intuitiva sintaxis del indexador sheet["B1"] facilita el acceso a las celdas tanto como trabajar con matrices. Para obtener una referencia completa de los miembros y sobrecargas disponibles, consulte la documentación de la API de IronXL .

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# usando IronXL: Imagen 5 - Salida de consola

¿Cómo leer datos de Excel en objetos de 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 necesita importar datos estructurados de Excel , la biblioteca proporciona múltiples enfoques que se asignan directamente a sus modelos de dominio.

El siguiente ejemplo lee filas de una hoja de cálculo y asigna cada fila a un objeto Product tipificado:

using IronXL;

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Map rows to typed objects
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}"
    );
}
using IronXL;

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Map rows to typed objects
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}"
    );
}
$vbLabelText   $csharpLabel

Las propiedades tipificadas - IntValue, StringValue, DecimalValue y BoolValue - manejan la conversión de tipos automáticamente. Este enfoque elimina el análisis manual y reduce los errores al trabajar con columnas de tipos de datos mixtos. Muchos desarrolladores en Stack Overflow valoran este enfoque 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# usando IronXL: Imagen 6 - Salida del objeto

¿Cómo trabajar con rangos de celdas y LINQ?

Para cálculos agregados y consultas filtradas, IronXL admite operaciones de rango con compatibilidad LINQ incorporada:

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Read a named cell range
Range dataRange = sheet["A1:D5"];

// Calculate aggregates directly on a range
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}");

// Filter using LINQ
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();

Console.WriteLine("Orders above 100:");
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Read a named cell range
Range dataRange = sheet["A1:D5"];

// Calculate aggregates directly on a range
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}");

// Filter using LINQ
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();

Console.WriteLine("Orders above 100:");
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
$vbLabelText   $csharpLabel

La clase Range proporciona acceso similar a una colección a múltiples celdas simultáneamente. La compatibilidad con LINQ permite filtrar, transformar y agregar datos de Excel mediante patrones habituales de C# sin necesidad de convertirlos primero a colecciones intermedias. Los métodos de agregación integrados, como Sum() y Max(), operan directamente en rangos de celdas. Para obtener más detalles sobre la lectura de datos de libros de trabajo, consulte la guía de lectura de archivos Excel de IronXL .

Resultado

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

¿Cómo convertir Excel a DataTable en C#?

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 integrados que manejan la conversión de Excel a DataSet o DataTable . Esta función es especialmente útil cuando necesita importar hojas de cálculo de Excel a SQL Server u otras bases de datos relacionales. Dado que el objeto resultante es un System.Data.DataTable estándar, funciona con cualquier ruta de código compatible con ADO.NET sin necesidad de realizar cambios en la capa de acceso a datos.

using IronXL;
using System.Data;
using System.Data.SqlClient;

// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select the first worksheet
WorkSheet sheet = workBook.WorkSheets.First();

// Convert to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

// Use SqlBulkCopy to insert directly into SQL Server
string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
using IronXL;
using System.Data;
using System.Data.SqlClient;

// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select the first worksheet
WorkSheet sheet = workBook.WorkSheets.First();

// Convert to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

// Use SqlBulkCopy to insert directly into SQL Server
string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
$vbLabelText   $csharpLabel

El método ToDataTable() acepta un parámetro booleano que indica si la primera fila contiene encabezados. Cuando se establece en true, IronXL utiliza automáticamente los valores de la primera fila como nombres de columna. La DataTable resultante se integra con ADO .NET, Entity Framework y controles de enlace de datos sin ninguna configuración adicional.

Para tener más control sobre el proceso de conversión, puedes crear la DataTable manualmente:

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workBook.WorkSheets.First();

// Build DataTable manually for custom column types or validation
DataTable customTable = new DataTable();

for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}

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 headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();

// Print data rows
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workBook.WorkSheets.First();

// Build DataTable manually for custom column types or validation
DataTable customTable = new DataTable();

for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}

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 headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();

// Print data rows
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Este enfoque le brinda total flexibilidad durante la importación. Los valores nulos se manejan con elegancia convirtiéndolos a DBNull.Value, lo que garantiza la compatibilidad con las restricciones de columnas de la base de datos. Para obtener más orientación sobre cómo volver a escribir datos en archivos, consulte la guía de escritura de archivos de Excel de IronXL .

Resultado

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

¿Cómo trabajar con fórmulas, libros de trabajo de varias hojas y Entity Framework?

IronXL va más allá de la lectura básica con funciones para escenarios complejos del mundo real. La biblioteca conserva las fórmulas de Excel, lo que permite evaluar los cálculos de forma dinámica. Para los desarrolladores que trabajan con libros de Excel complejos , 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# usando IronXL: Imagen 9 - Características

Lectura de fórmulas y valores calculados

using IronXL;

WorkBook workBook = WorkBook.Load("FinancialReport.xlsx");
WorkSheet sheet = workBook.GetWorkSheet("Reports");

// Read the evaluated result of a formula cell
decimal calculatedTotal = sheet["E10"].DecimalValue;
Console.WriteLine($"Total: {calculatedTotal}");

// Read the formula string itself
string formula = sheet["E10"].Formula;
Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)"
using IronXL;

WorkBook workBook = WorkBook.Load("FinancialReport.xlsx");
WorkSheet sheet = workBook.GetWorkSheet("Reports");

// Read the evaluated result of a formula cell
decimal calculatedTotal = sheet["E10"].DecimalValue;
Console.WriteLine($"Total: {calculatedTotal}");

// Read the formula string itself
string formula = sheet["E10"].Formula;
Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)"
$vbLabelText   $csharpLabel

La compatibilidad con fórmulas significa que la importación de archivos de Excel con cálculos complejos funciona sin tener que recrear la lógica empresarial en el código. La biblioteca evalúa las fórmulas automáticamente y devuelve valores calculados mientras conserva la cadena de fórmula original. Esto resulta invaluable al importar modelos financieros o plantillas de informes que contienen fórmulas anidadas.

La compatibilidad entre plataformas garantiza un comportamiento coherente en entornos Windows, Linux, macOS y contenedores. Esto hace que IronXL sea ideal para implementaciones en la nube y microservicios donde la instalación de Office no es factible. La documentación de .NET Foundation destaca cómo las aplicaciones .NET modernas se benefician de la independencia de la plataforma.

Integración de datos de Excel con Entity Framework

La integración de Entity Framework crea canales directos de Excel a la base de datos. El siguiente patrón funciona limpiamente con declaraciones de nivel superior de .NET 10:

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Skip the header row, map remaining rows to entity objects
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();
await context.Products.AddRangeAsync(products);
await context.SaveChangesAsync();

Console.WriteLine($"Imported {products.Count} products.");
using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Skip the header row, map remaining rows to entity objects
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();
await context.Products.AddRangeAsync(products);
await context.SaveChangesAsync();

Console.WriteLine($"Imported {products.Count} products.");
$vbLabelText   $csharpLabel

Este patrón permite la migración directa de Excel a la base de datos con un código mínimo, lo que lo hace ideal para procesos ETL, migraciones de datos únicas y trabajos de importación programados. Dado que la proyección LINQ se ejecuta en memoria antes de guardar el contexto, puede aplicar lógica de validación o transformación en el mismo paso. Para crear nuevos archivos de Excel a partir de datos de C#, consulte la guía de creación de archivos de Excel de IronXL .

Formatoos de archivo compatibles

IronXL maneja una amplia gama de formatos de hojas de cálculo sin necesidad de bibliotecas adicionales ni instalación de Office. La siguiente tabla resume los formatos admitidos y sus casos de uso:

Formatoos de archivo de Excel compatibles con IronXL
Formato Extensión Notas
Libro de Excel .xlsx Formatoo predeterminado para Excel 2007 y versiones posteriores
Libro de trabajo de Excel heredado .xls Compatible con versiones anteriores de Excel
Valores separados por comas .csv Datos tabulares en texto simple, ampliamente admitidos
Valores separados por tabulaciones .tsv Adecuado para datos con comas incrustadas
Libro binario de Excel .xlsb Formatoo binario compacto para archivos grandes

Para volver a exportar datos a estos formatos, consulte la guía de exportación de IronXL a Excel .

¿Cómo se maneja el formato de celda durante la importación?

Al importar archivos de Excel, preservar o inspeccionar el formato de las celdas suele ser tan importante como leer los valores sin procesar. IronXL expone propiedades de fuente, color, alineación y borde para cada celda, de modo que puede aplicar reglas de validación o reproducir estilos mediante programación. Esto es particularmente útil para informes en los que el formato visual tiene un significado semántico: por ejemplo, celdas coloreadas que indican niveles de riesgo o filas en negrita que marcan totales.

Por ejemplo, es posible que desee verificar si las celdas contienen texto en negrita (una señal común de que una fila es una fila de resumen o de totales) antes de decidir si incluirla en el conjunto de datos importado:

using IronXL;

WorkBook workBook = WorkBook.Load("StyledReport.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

foreach (var row in sheet.Rows)
{
    var firstCell = row.Columns[0];

    // Skip rows where the first cell is bold (typically header or total rows)
    if (firstCell.Style.Font.Bold)
    {
        continue;
    }

    Console.WriteLine($"Data row: {firstCell.StringValue}");
}
using IronXL;

WorkBook workBook = WorkBook.Load("StyledReport.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

foreach (var row in sheet.Rows)
{
    var firstCell = row.Columns[0];

    // Skip rows where the first cell is bold (typically header or total rows)
    if (firstCell.Style.Font.Bold)
    {
        continue;
    }

    Console.WriteLine($"Data row: {firstCell.StringValue}");
}
$vbLabelText   $csharpLabel

Para obtener una referencia completa sobre el formato de celdas y rangos, incluidas las cadenas de formato de números y el acceso al color de fondo, consulte la guía de formato de celdas de IronXL . También puede aplicar operaciones de combinación a los archivos de salida después del procesamiento: consulte la guía de combinación de celdas de IronXL .

¿Cómo elegir la licencia IronXL adecuada para su proyecto?

IronXL ofrece opciones de licencia flexibles para adaptarse a la escala de su proyecto. Hay una licencia de prueba gratuita disponible para evaluación, que le da acceso a todas las funciones sin restricciones de tiempo durante el desarrollo. La versión de prueba agrega una marca de agua a los archivos de salida, que se elimina con una licencia de producción válida.

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

Para los equipos que crean aplicaciones de producción, las licencias de IronXL incluyen opciones para desarrolladores individuales, equipos e implementaciones en toda la organización. Todas las licencias de producción incluyen:

  • Derechos de redistribución libres de regalías
  • Soporte prioritario del equipo de desarrollo de IronXL
  • Acceso a todas las actualizaciones actuales y de versiones menores durante el período de la licencia

Si está evaluando IronXL junto con otras bibliotecas de Excel, la descripción general de las características de IronXL proporciona un desglose detallado de lo que se incluye en cada nivel.

Para comenzar a utilizar IronXL en su proyecto hoy mismo, visite la página del producto IronXL o comience directamente con la documentación de IronXL para obtener guías de configuración, artículos instructivos y referencias de API que cubren todas las funciones de la biblioteca.

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me