Saltar al pie de página
USANDO IRONXL

Cómo importar un archivo de Excel en C#

Importa archivos Excel en C# utilizando IronXL, una biblioteca .NET que lee archivos XLS, XLSX y CSV sin necesidad de tener instalado Microsoft Excel. Basta con utilizar WorkBook.Load("file.xlsx") para abrir archivos y acceder a los datos de las celdas con una sintaxis intuitiva como sheet["A1"].

Microsoft Excel es un software de hojas de cálculo versátil que ayuda a organizar, presentar y analizar datos. Sin embargo, trabajar con Excel mediante programación en C# puede resultar complicado, especialmente cuando se trata de diferentes tipos de archivos de hoja de cálculo o cuando Microsoft Office no está instalado en el servidor de implementación. La biblioteca IronXL ofrece una solución completa para importar y leer archivos Excel en aplicaciones C#, compatible con diversos formatos, incluidos los archivos XLSX, XLS y CSV.

¿Qué es IronXL y por qué debería utilizarlo para importar archivos de Excel?

IronXL es una biblioteca IronXL for .NET que prioriza la facilidad de uso, la precisión y la velocidad. Te ayuda a importar y leer documentos de Excel, así como a crear y editar archivos de Excel de forma eficiente con un rendimiento ultrarrápido. A diferencia de los enfoques tradicionales que requieren Microsoft Office Interop, IronXL funciona de forma independiente sin dependencias de MS Office Interop. Esto significa que dispones de todas las funcionalidades para leer archivos de Excel sin necesidad de tener Excel instalado. Esto convierte a IronXL en una potente herramienta para que los desarrolladores importen y lean archivos de Excel en aplicaciones C#, tanto si están creando aplicaciones web ASP.NET, aplicaciones de escritorio o soluciones basadas en la nube.

IronXL está disponible en todas las plataformas, como Windows, Linux, macOS, Docker, Azure y AWS. Es compatible con todas las versiones de .NET Framework y admite entornos modernos de .NET Core y .NET 5+. IronXL es una biblioteca versátil que se puede integrar en aplicaciones de consola, de escritorio y web ASP.NET, así como en aplicaciones Blazor. Es compatible con diferentes formatos de libros de trabajo, como archivos XLS y XLSX, XSLT y XLSM, CSV y TSV, lo que lo hace ideal para situaciones en las que es necesario convertir entre distintos tipos de archivos de hoja de cálculo.

¿Qué características clave hacen que IronXL sea esencial para la importación de Excel?

¿Cómo importo un libro de Excel en C#?

¿Qué necesito antes de iniciar la importación de Excel?

Para utilizar IronXL en C# para leer archivos de Excel, asegúrate de que los siguientes componentes estén instalados en tu ordenador:

  1. Visual Studio: es el IDE oficial para desarrollar aplicaciones C# .NET. Visual Studio ofrece excelentes herramientas de soporte y depuración IntelliSense que facilitan el trabajo con archivos de Excel. Puedes descargar e instalar Visual Studio desde el sitio web de Microsoft. La Community Edition es gratuita y suficiente para la mayoría de las necesidades de desarrollo.

  2. IronXL: esta es la biblioteca IronXL que te ayuda a trabajar con hojas de Excel en una ruta determinada en C#. Debe instalarse en su programa C# antes de utilizarlo. IronXL se puede descargar fácilmente desde el sitio web de NuGet o instalar directamente a través de la interfaz "Administrar paquetes de NuGet" en las herramientas de Visual Studio. También puede descargar directamente el archivo DLL de .NET Excel si prefiere la instalación manual.

Para implementaciones en producción, deberá aplicar una clave de licencia para eliminar las marcas de agua y habilitar todas las funciones. El desarrollo y las pruebas se pueden realizar con la versión de prueba.

¿Qué espacios de nombres debo añadir a mi código?

Una vez instalados Visual Studio e IronXL, haga referencia al ensamblado de IronXL para utilizar IronXL en su código fuente. Agregue la siguiente línea de código en la parte superior del archivo dentro del nuevo proyecto donde se utilizarán las funciones de IronXL:

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

Esta importación de un único espacio de nombres proporciona acceso a todas las funciones básicas necesarias para las operaciones de Excel. Si trabajas con funciones específicas de Excel, como gráficos o formato condicional, es posible que tengas que importar espacios de nombres adicionales de la biblioteca IronXL.

¿Cómo se carga y se abre un archivo de Excel?

Las Hojas de Cálculo de Microsoft Excel también se conocen como Libros de Excel. Cada libro contiene varias hojas de cálculo (también llamadas hojas), y una sola hoja de cálculo contiene celdas tabulares organizadas en filas y columnas con sus respectivos valores. Para abrir y leer un archivo de Excel, cárguelo utilizando la clase WorkBook y el método Load presentes en la biblioteca IronXL. El código es el siguiente:

// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
    WorkBook streamWorkbook = WorkBook.Load(stream);
}

// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
    WorkBook streamWorkbook = WorkBook.Load(stream);
}

// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
' Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")

' You can also load from a stream
Using stream = File.OpenRead("test.xlsx")
    Dim streamWorkbook As WorkBook = WorkBook.Load(stream)
End Using

' Or load CSV files with custom delimiters
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("data.csv", delimiter:=",")
$vbLabelText   $csharpLabel

Esto abre el archivo de Excel en la variable de referencia de instancia de libro de trabajo. Dado que un libro de trabajo puede contener varias hojas de cálculo, puede acceder a ellas de diversas formas. El siguiente código abre la primera hoja en la variable de instancia de la hoja:

// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();

// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");

// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();

// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");

// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
' Get the first worksheet
Dim sheet As WorkSheet = workbook.WorkSheets.First()

' Or access by worksheet name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("Sheet1")

' Or by index (zero-based)
Dim indexedSheet As WorkSheet = workbook.WorkSheets(0)
$vbLabelText   $csharpLabel

Esto abrirá la primera hoja en el archivo de Excel, y ahora se pueden leer y escribir datos de Excel en esta hoja. Para escenarios más avanzados, es posible que necesites gestionar varias hojas de cálculo o crear nuevas hojas de cálculo mediante programación.

Archivo de Excel abierto

Hoja de cálculo de Excel que muestra datos de empleados con columnas para Nombre, Cargo y Salario, y que contiene 5 registros de empleados con diversos cargos y salarios Archivo de Excel de muestra que contiene información de empleados que se importará utilizando C#. Los datos incluyen nombres, cargos (gerente, director, empleado, presidente) y los valores salariales correspondientes.

¿Cómo puedo leer valores de celdas específicos después de la importación?

Una vez importado el archivo de Excel, está listo para leer los datos. Leer datos de archivos de Excel en C# usando IronXL es muy simple y fácil. Puedes leer los valores de las celdas de Excel simplemente indicando el número de referencia de la celda en la notación estándar de Excel (como "A1", "B2", etc.). La biblioteca ofrece múltiples formas de acceder a los valores de las celdas en función del tipo de datos esperado.

El código a continuación recupera el valor de una celda con número de referencia "C2":

// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;

// Display the value
Console.WriteLine(cellValue);

// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;

// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;

// Display the value
Console.WriteLine(cellValue);

// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;

// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
' Select cells easily in Excel-notation and return the value
Dim cellValue As Integer = sheet("C2").IntValue

' Display the value
Console.WriteLine(cellValue)

' You can also access different data types
Dim textValue As String = sheet("A2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim doubleValue As Double = sheet("C2").DoubleValue
Dim dateValue As DateTime = sheet("D2").DateTimeValue
Dim boolValue As Boolean = sheet("E2").BoolValue

' Check if cell is empty
Dim isEmpty As Boolean = sheet("F2").IsEmpty
$vbLabelText   $csharpLabel

El resultado es el siguiente:

Ventana de la consola de depuración de Microsoft Visual Studio que muestra el resultado de una operación de lectura de un archivo de Excel, con la ruta del archivo y un mensaje de finalización Salida de la consola de depuración tras leer correctamente un archivo Excel en C#. El programa ha finalizado su ejecución y está a la espera de una acción del usuario para cerrarse.

Ahora, leamos los datos de un rango de celdas en el archivo de Excel abierto. IronXL facilita el trabajo con rangos de celdas utilizando la notación habitual de Excel. El código es el siguiente:

// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
    Console.WriteLine($"Row cell value: {cell.Value}");
}

// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
    Console.WriteLine($"Column A value: {cell.Value}");
}
// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
    Console.WriteLine($"Row cell value: {cell.Value}");
}

// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
    Console.WriteLine($"Column A value: {cell.Value}");
}
' Read from a range of cells elegantly.
For Each cell In sheet("A2:A6")
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next

' You can also work with entire rows or columns
Dim row = sheet.GetRow(2) ' Get row 3 (0-indexed)
For Each cell In row
    Console.WriteLine($"Row cell value: {cell.Value}")
Next

' Or get a column
Dim column = sheet.GetColumn(0) ' Get column A
For Each cell In column
    Console.WriteLine($"Column A value: {cell.Value}")
Next
$vbLabelText   $csharpLabel

El código es muy simple, limpio y claro. Se puede hacer referencia al rango de celdas con una sintaxis sencilla, como se muestra en un bucle foreach: sheet["A2:A6"] y se puede iterar por cada celda para obtener su valor. Aquí verás los nombres de la columna A, desde la fila 2 hasta la fila 6, en la salida de la consola:

Consola de depuración de Microsoft Visual Studio que muestra el resultado de la lectura de las celdas A2 a A6 de Excel, con los nombres: John, Sara, Peter, Mathew y Katherine Salida de consola que muestra la lectura correcta de un rango de celdas de Excel (A2:A6) que contienen nombres utilizando C#

Para obtener más detalles sobre cómo leer y escribir en valores de celda, consulta este tutorial sobre cómo leer archivos de Excel en C# (ejemplo). También puedes explorar funciones avanzadas como aplicar fórmulas o trabajar con rangos con nombre.

¿Cómo importo hojas de cálculo completas de una sola vez?

IronXL se puede usar para leer hojas de Excel a la vez usando índices de filas y columnas. Esto resulta especialmente útil cuando necesitas procesar todos los datos de una hoja de cálculo o cuando estás convirtiendo Excel a otros formatos como CSV o JSON. Los siguientes ejemplos de código de IronXL le ayudarán a obtener todos los datos del archivo de Excel en el mismo formato en la salida de la consola:

WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
    // Traverse all columns of specific Row
    for (int j = 0; j < sheet.Columns.Count(); j++)
    {
        // Get the values
        string val = sheet.Rows[i].Columns[j].Value.ToString();
        Console.Write("{0}\t", val);
    }
    Console.WriteLine();
}

// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row => 
    row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
    // Traverse all columns of specific Row
    for (int j = 0; j < sheet.Columns.Count(); j++)
    {
        // Get the values
        string val = sheet.Rows[i].Columns[j].Value.ToString();
        Console.Write("{0}\t", val);
    }
    Console.WriteLine();
}

// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row => 
    row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets.First()

' Traverse all rows of Excel WorkSheet
For i As Integer = 0 To sheet.Rows.Count() - 1
    ' Traverse all columns of specific Row
    For j As Integer = 0 To sheet.Columns.Count() - 1
        ' Get the values
        Dim val As String = sheet.Rows(i).Columns(j).Value.ToString()
        Console.Write("{0}" & vbTab, val)
    Next
    Console.WriteLine()
Next

' Alternative method using LINQ for more efficient processing
Dim allData = sheet.Rows.SelectMany(Function(row) 
    row.Columns.Select(Function(col) If(col.Value?.ToString(), ""))).ToList()
$vbLabelText   $csharpLabel

Para archivos de Excel de mayor tamaño, es posible que desee considerar el uso de objetos DataTable o DataSet para obtener un mejor rendimiento y facilitar la manipulación de datos:

// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers

// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers

// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
' Convert worksheet to DataTable for easier manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True) ' True = first row contains headers

' Process data using DataTable methods
For Each row As DataRow In dataTable.Rows
    For Each item In row.ItemArray
        Console.Write($"{item}" & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

Archivo de salida

Consola de depuración de Microsoft Visual Studio que muestra una tabla de datos de empleados con columnas para Nombre, Cargo y Salario, mostrando 5 registros de empleados leídos de un archivo de Excel La salida de la consola muestra correctamente los datos de los empleados importados del archivo Excel, con el formato adecuado que muestra los nombres, los cargos y la información salarial.

.

¿Cuáles son los siguientes pasos tras importar archivos de Excel?

Este artículo ha mostrado cómo importar y leer un archivo de Excel en C# sin tener instalado Microsoft Excel. Abarca múltiples formas de leer datos de una hoja de cálculo de Excel, desde celdas individuales hasta hojas de cálculo completas. IronXL también te ayuda a crear archivos de Excel en C# sin necesidad de instalar Excel.

Una vez importados correctamente los datos de Excel, es posible que desee explorar otras funciones:

IronXL proporciona una solución integral para todas las tareas relacionadas con documentos de Microsoft Excel que se implementan programáticamente. Puede realizar cálculos de fórmulas, ordenar cadenas o números, recortar y añadir texto, buscar y reemplazar, fusionar y desfusionar celdas, guardar archivos y mucho más. Puede editar los valores de las celdas y también establecer formatos de datos de celda, además de validar los datos de la hoja de cálculo. También es compatible con archivos CSV y te ayuda a trabajar con datos de Excel a la perfección.

Para aplicaciones Enterprise, considere explorar opciones de implementación para diversas plataformas, incluyendo contenedores Docker, Azure Functions y AWS Lambda.

IronXL está disponible para una prueba gratuita y se puede adquirir una licencia para uso comercial con su paquete Lite a partir de $799 únicamente. La biblioteca ofrece una excelente documentación, tutoriales y ejemplos de código para ayudarte a empezar rápidamente con las operaciones de archivos de Excel en tus aplicaciones de C#.

Preguntas Frecuentes

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

Puedes importar y leer archivos Excel en C# usando la biblioteca IronXL. Simplemente carga el archivo Excel usando WorkBook.Load("file.xlsx") para acceder y procesar los datos sin necesidad de tener Microsoft Excel instalado.

¿Con qué plataformas es compatible la biblioteca IronXL?

IronXL es compatible con todos los Frameworks .NET y puede usarse en múltiples plataformas, incluidas Windows, Linux, MacOS, Docker, Azure y AWS.

¿Puedo usar IronXL para editar archivos Excel sin tener instalado Microsoft Excel?

Sí, IronXL te permite crear y editar archivos Excel programáticamente en C# sin requerir que Microsoft Excel esté instalado en tu sistema.

¿Qué formatos de Excel puede manejar IronXL?

IronXL soporta varios formatos de archivo Excel como XLS, XLSX, CSV, TSV y muchos más, permitiendo una fácil importación y manipulación de datos.

¿Cuáles son los requisitos previos para usar IronXL en un proyecto de C#?

Para usar IronXL, asegúrate de tener Visual Studio instalado. Puedes agregar IronXL a tu proyecto a través del administrador de paquetes NuGet o descargando y referenciando la DLL .NET Excel.

¿Cómo puedo cargar un libro de Excel con IronXL en C#?

Para cargar un libro de Excel en C#, usa el método WorkBook.Load("path/to/file.xlsx") de IronXL, lo que te permite abrir y manipular el libro.

¿Es posible manejar fórmulas de Excel utilizando IronXL?

Sí, IronXL puede procesar y recalcular fórmulas de Excel sin problemas cada vez que se edita una hoja, asegurando precisión en los cálculos de datos.

¿Cómo leo datos de una celda específica usando IronXL?

Para leer datos de una celda específica, usa la sintaxis de IronXL como sheet["B2"].StringValue para obtener el valor de la celda B2.

¿Puedo iterar sobre un rango de celdas en una hoja de Excel usando IronXL?

Sí, puedes iterar sobre un rango de celdas usando IronXL con una sintaxis como foreach (var cell in sheet["A1:C3"]) para procesar cada celda individualmente.

¿Cómo se puede integrar IronXL en aplicaciones ASP.NET?

IronXL se puede integrar fácilmente en aplicaciones ASP.NET agregando la biblioteca a través de NuGet y referenciándola en tu proyecto, lo que permite la manipulación de archivos Excel en aplicaciones web.

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

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame