Saltar al pie de página
USANDO IRONXL

Cómo abrir archivos de Excel en C#

IronXL permite a los desarrolladores C# abrir, leer y manipular archivos Excel sin requerir la instalación de Microsoft Office. Simplemente carga libros de trabajo usando WorkBook.Load(), accede a hojas de trabajo y lee valores de celdas con una sintaxis intuitiva como sheet["A1"].

Este tutorial explora el uso de IronXL para abrir y leer archivos Excel en proyectos de C#, proporcionando a los desarrolladores junior ejemplos completos y mejores prácticas para trabajar con datos de Excel.

¿Qué es la biblioteca Excel de IronXL?

IronXL es una biblioteca .NET que prioriza la facilidad de uso, la precisión y la rapidez. Le ayuda a abrir, leer, crear y editar archivos de Excel de manera eficiente sin requerir MS Office Interop, lo que lo hace una elección práctica para los desarrolladores que buscan trabajar con Excel en C# sin Interop.

IronXL is compatible with all .NET Frameworks along with Linux, macOS, Docker, Azure, and AWS. Puede usarlo para crear aplicaciones de Consola, Web y Escritorio, como Blazor y .NET MAUI para aplicaciones web modernas. Soporta diferentes formatos de libros de trabajo como archivos XLS y XLSX, XSLT y XLSM, CSV y TSV.

¿Cuáles son las características principales de IronXL?

¿Cómo abrir un archivo de Excel en C#?

¿Qué necesito antes de comenzar?

Para usar IronXL en aplicaciones C#, instala los siguientes componentes en tu computadora local:

  1. Visual Studio - El IDE oficial para desarrollar aplicaciones C# .NET. Puedes descargar e instalar Visual Studio desde el sitio web de Microsoft. También puedes usar JetBrains ReSharper & Rider. Para obtener orientación adicional sobre la configuración, consulte la Visión general para comenzar.
  2. IronXL - La biblioteca de Excel que ayuda a trabajar con hojas de Excel en C#. Debe instalarse en su aplicación C# antes de usarla. Puede descargarla desde el sitio web de NuGet o desde Gestionar paquetes de NuGet en Visual Studio. También puedes descargar directamente el archivo .NET Excel DLL. Para la implementación de licencias, consulte Uso de claves de licencia.

¿Qué espacios de nombres debo importar?

Una vez que Visual Studio e IronXL estén instalados, agrega los espacios de nombres necesarios de IronXL incluyendo la siguiente línea en la parte superior de tu archivo C#:

// Add reference to the IronXL library
using IronXL;
// Add reference to the IronXL library
using IronXL;
' Add reference to the IronXL library
Imports IronXL
$vbLabelText   $csharpLabel

Para trabajar con formatos específicos de Excel o características avanzadas, también puede necesitar:

using IronXL.Formatting;  // For cell styling
using IronXL.Drawing;     // For images and charts
using System.Data;        // For DataSet/DataTable operations
using IronXL.Formatting;  // For cell styling
using IronXL.Drawing;     // For images and charts
using System.Data;        // For DataSet/DataTable operations
Imports IronXL.Formatting  ' For cell styling
Imports IronXL.Drawing     ' For images and charts
Imports System.Data        ' For DataSet/DataTable operations
$vbLabelText   $csharpLabel

¿Cómo cargo un archivo de Excel existente?

Los archivos de Excel, también conocidos como libros de trabajo, consisten en múltiples hojas de trabajo, cada una con valores de celda. To open and read an Excel file, load it using the WorkBook class's Load method. La funcionalidad LoadSpreadsheets admite varios formatos.

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

// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
//     WorkBook workbook = WorkBook.Load(stream);
// }
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
//     WorkBook workbook = WorkBook.Load(stream);
// }
' 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 streams for web applications
' Using stream = File.OpenRead("test.xlsx")
'     Dim workbook As WorkBook = WorkBook.Load(stream)
' End Using
$vbLabelText   $csharpLabel

Esto inicializa el libro de trabajo como una instancia WorkBook. Para abrir un WorkSheet específico, recupéralo de la colección WorkSheets. La guía Gestionar hoja de trabajo proporciona más detalles sobre las operaciones de hojas de trabajo:

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

// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0];  // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1");  // By name
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets.First();

// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0];  // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1");  // By name
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.WorkSheets.First()

' Alternative ways to access worksheets
Dim sheetByIndex As WorkSheet = workbook.WorkSheets(0)  ' By index
Dim sheetByName As WorkSheet = workbook.GetWorkSheet("Sheet1")  ' By name
$vbLabelText   $csharpLabel

Esto accede a la primera hoja en el archivo de Excel, lista para lectura y escritura.

Hoja de cálculo de Excel mostrando datos de empleados con columnas para Nombre, Designación y Salario a través de 5 empleados con encabezados formateados y bordes de celda Archivo de Excel

¿Cómo leo datos de celdas de Excel?

Una vez abierto el archivo de Excel, está listo para leer datos. Leer datos de archivos de Excel en C# usando IronXL es sencillo. Puede leer los valores de las celdas especificando la referencia de la celda usando la funcionalidad de selección de rango.

El siguiente código recupera el valor de una celda:

// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;

// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;

// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");

// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
    Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;

// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;

// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");

// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
    Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
' Select the cell using Excel notation and retrieve its integer value
Dim cellValue As Integer = sheet("C2").IntValue

' You can also retrieve values in different formats
Dim textValue As String = sheet("C2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim dateValue As DateTime = sheet("C2").DateTimeValue
Dim boolValue As Boolean = sheet("C2").BoolValue

' Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}")

' Check if cell is empty before reading
If Not sheet("C2").IsEmpty Then
    Console.WriteLine($"Cell value: {sheet("C2").Value}")
End If
$vbLabelText   $csharpLabel

El resultado es el siguiente:

Ventana de consola de depuración de Microsoft Visual Studio mostrando la extracción exitosa del valor '100000' de la celda C2 de Excel con mensaje de salida contextual Leer Excel

Para leer datos de un rango de celdas, utilice un bucle para iterar a través del rango especificado. El ejemplo de selección de rango de Excel proporciona más patrones:

// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// Read an entire column
foreach (var cell in sheet.GetColumn(0))  // Column A
{
    if (!cell.IsEmpty)
    {
        Console.WriteLine($"Column A value: {cell.Text}");
    }
}

// Read an entire row
foreach (var cell in sheet.GetRow(1))  // Row 2
{
    Console.WriteLine($"Row 2 value: {cell.Text}");
}
// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// Read an entire column
foreach (var cell in sheet.GetColumn(0))  // Column A
{
    if (!cell.IsEmpty)
    {
        Console.WriteLine($"Column A value: {cell.Text}");
    }
}

// Read an entire row
foreach (var cell in sheet.GetRow(1))  // Row 2
{
    Console.WriteLine($"Row 2 value: {cell.Text}");
}
' Iterate through a range of cells and display their address and text content
For Each cell In sheet("A2:A6")
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next

' Read an entire column
For Each cell In sheet.GetColumn(0) ' Column A
    If Not cell.IsEmpty Then
        Console.WriteLine($"Column A value: {cell.Text}")
    End If
Next

' Read an entire row
For Each cell In sheet.GetRow(1) ' Row 2
    Console.WriteLine($"Row 2 value: {cell.Text}")
Next
$vbLabelText   $csharpLabel

Cada valor en el rango de celdas A2:A6 se accede y se imprime en la consola.

Consola de depuración de Microsoft Visual Studio con resaltado de sintaxis mostrando la salida de lectura del rango de Excel A2:A6, mostrando los nombres de empleados John, Sara, Peter, Method, y Katherine Leer rango de celdas

Para ejemplos más detallados de lectura y escritura, consulte el tutorial de lectura de Excel en C#. También puede convertir datos de Excel a DataTables para una manipulación más fácil:

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

// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
// Convert worksheet to DataTable for easier data manipulation
DataTable dataTable = sheet.ToDataTable(true);  // true = first row contains headers

// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
' Convert worksheet to DataTable for easier data manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True)  ' True = first row contains headers

' Access data using DataTable methods
For Each row As DataRow In dataTable.Rows
    Console.WriteLine($"Employee: {row("Name")}, Salary: {row("Salary")}")
Next
$vbLabelText   $csharpLabel

¿Cómo puedo crear un nuevo archivo de Excel?

IronXL también facilita la creación de nuevos libros para guardar y recuperar datos. La guía de Crear hojas de cálculo proporciona ejemplos completos.

Puedes crear un nuevo archivo de Excel con una sola línea de código:

// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);

// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);

// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);

// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);

// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
' Create a new workbook with the XLSX format
Dim workBook As New WorkBook(ExcelFileFormat.XLSX)

' Alternative: Create with XLS format for compatibility
Dim xlsWorkBook As New WorkBook(ExcelFileFormat.XLS)

' Set workbook metadata
workBook.Metadata.Title = "Employee Data"
workBook.Metadata.Author = "Your Name"
workBook.Metadata.Keywords = "employees, salary, data"
$vbLabelText   $csharpLabel

A continuación, crea una hoja de trabajo y añade datos a ella. Para patrones de creación más avanzados, consulte Crear un nuevo archivo de Excel.

¿Cómo agrego hojas de trabajo a un libro?

// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");

// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");

// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");

// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");

// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
' Create a worksheet named "GDPByCountry" in the workbook
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("GDPByCountry")

' Create multiple worksheets at once
Dim sheet2 As WorkSheet = workBook.CreateWorkSheet("PopulationData")
Dim sheet3 As WorkSheet = workBook.CreateWorkSheet("Summary")

' Copy an existing worksheet
Dim copiedSheet As WorkSheet = workSheet.CopySheet("GDPByCountryCopy")
$vbLabelText   $csharpLabel

Este código añade una hoja de trabajo llamada "GDPByCountry" al libro de trabajo, permitiéndote añadir valores a celdas. Aprenda más sobre gestión de hojas de trabajo y copiar hojas de trabajo.

Para establecer un valor para una celda específica, utiliza el siguiente código:

// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";

// Add different types of data
workSheet["A2"].Value = 12345;  // Integer
workSheet["A3"].Value = 99.99m;  // Decimal
workSheet["A4"].Value = DateTime.Now;  // Date
workSheet["A5"].Value = true;  // Boolean

// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";

// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";

// Save the workbook
workBook.SaveAs("output.xlsx");
// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";

// Add different types of data
workSheet["A2"].Value = 12345;  // Integer
workSheet["A3"].Value = 99.99m;  // Decimal
workSheet["A4"].Value = DateTime.Now;  // Date
workSheet["A5"].Value = true;  // Boolean

// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";

// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";

// Save the workbook
workBook.SaveAs("output.xlsx");
' Set the value of cell A1 to "Example"
workSheet("A1").Value = "Example"

' Add different types of data
workSheet("A2").Value = 12345  ' Integer
workSheet("A3").Value = 99.99D  ' Decimal
workSheet("A4").Value = DateTime.Now  ' Date
workSheet("A5").Value = True  ' Boolean

' Add formulas
workSheet("B1").Formula = "=SUM(A2:A3)"

' Set multiple cells at once using a range
workSheet("C1:C5").Value = "Bulk Value"

' Save the workbook
workBook.SaveAs("output.xlsx")
$vbLabelText   $csharpLabel

El resultado final es:

Hoja de cálculo de Excel mostrando la celda A1 poblada con el texto 'Example' añadido programáticamente usando C#, con la pestaña de la hoja de trabajo GDPByCountry visible y realce de celda para mostrar el valor añadido Añadir Valor a la Celda

Trabajando con diferentes formatos de Excel

IronXL admite múltiples formatos de Excel. Aquí está cómo manejar diferentes tipos de archivo:

// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx");  // Convert CSV to XLSX

// Export to different formats
workbook.SaveAsCsv("output.csv", ";");  // CSV with semicolon delimiter
workbook.SaveAsJson("output.json");     // Export as JSON
workbook.SaveAsXml("output.xml");       // Export as XML
// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx");  // Convert CSV to XLSX

// Export to different formats
workbook.SaveAsCsv("output.csv", ";");  // CSV with semicolon delimiter
workbook.SaveAsJson("output.json");     // Export as JSON
workbook.SaveAsXml("output.xml");       // Export as XML
' Convert between formats
Dim workbook As WorkBook = WorkBook.Load("data.csv")
workbook.SaveAs("data.xlsx")  ' Convert CSV to XLSX

' Export to different formats
workbook.SaveAsCsv("output.csv", ";")  ' CSV with semicolon delimiter
workbook.SaveAsJson("output.json")     ' Export as JSON
workbook.SaveAsXml("output.xml")       ' Export as XML
$vbLabelText   $csharpLabel

Aprende más acerca de convertir tipos de archivo de hoja de cálculo y convertir XLSX a CSV, JSON, XML.

Manejo de errores y buenas prácticas

Al trabajar con archivos Excel, implemente un manejo adecuado de errores:

try
{
    WorkBook workbook = WorkBook.Load("test.xlsx");
    WorkSheet sheet = workbook.GetWorkSheet("Sheet1");

    // Check if sheet exists
    if (sheet == null)
    {
        Console.WriteLine("Worksheet not found!");
        return;
    }

    // Process data
    var value = sheet["A1"].Value;
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
try
{
    WorkBook workbook = WorkBook.Load("test.xlsx");
    WorkSheet sheet = workbook.GetWorkSheet("Sheet1");

    // Check if sheet exists
    if (sheet == null)
    {
        Console.WriteLine("Worksheet not found!");
        return;
    }

    // Process data
    var value = sheet["A1"].Value;
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
Imports System

Try
    Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
    Dim sheet As WorkSheet = workbook.GetWorkSheet("Sheet1")

    ' Check if sheet exists
    If sheet Is Nothing Then
        Console.WriteLine("Worksheet not found!")
        Return
    End If

    ' Process data
    Dim value = sheet("A1").Value
Catch ex As Exception
    Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

Para aplicaciones de producción, considere configurar registros e implementar patrones adecuados de manejo de errores.

¿Qué hemos aprendido?

Este artículo demuestra cómo abrir y leer archivos de Excel, como XLS y XLSX, en C# usando IronXL. IronXL no requiere que Microsoft Excel esté instalado en el sistema para tareas relacionadas con Excel, lo que lo hace perfecto para despliegues Docker y funciones Azure.

IronXL proporciona una solución integral para tareas relacionadas con Excel de manera programática, incluyendo cálculo de fórmulas, ordenamiento de cadenas, recorte, búsqueda y reemplazo, fusión y desfusió, guardar archivos, y más. También puede establecer formatos de datos de celda, trabajar con formato condicional, y crear gráficos.

Para funciones avanzadas, explore la agrupación y desagrupación, los rangos con nombre, los hipervínculos y la protección de archivos de Excel. La Referencia completa de la API proporciona documentación detallada sobre todas las características.

IronXL está disponible para una prueba gratuita de 30 días y se puede adquirir una licencia para uso comercial. El paquete Lite de IronXL comienza desde $999. Para obtener recursos adicionales, visita la sección de tutoriales o explora los ejemplos de código para situaciones habituales.

Preguntas Frecuentes

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

Puede abrir archivos de Excel en C# sin usar Interop utilizando la biblioteca IronXL. Use el método WorkBook.Load para cargar un archivo de Excel en una instancia de WorkBook, lo que le permite acceder y manipular datos dentro del archivo.

¿Qué formatos de archivo son compatibles con esta biblioteca de Excel para C#?

IronXL admite una variedad de formatos de archivo de Excel, incluidos XLS, XLSX, CSV y TSV. Esto permite a los desarrolladores abrir, leer y escribir en estos formatos de manera flexible dentro de sus aplicaciones C#.

¿Puedo editar archivos de Excel en C# usando esta biblioteca?

Sí, puede editar archivos de Excel usando IronXL. Después de cargar un libro de trabajo, puede modificar datos, agregar nuevas hojas de trabajo y luego guardar los cambios en el archivo o exportarlo en varios formatos.

¿Cómo instalo esta biblioteca para usarla en mi proyecto C#?

Para instalar IronXL en su proyecto C#, puede usar el Administrador de paquetes NuGet en Visual Studio para agregar la biblioteca. Alternativamente, puede descargar el DLL de Excel for .NET y hacer referencia a él en su proyecto.

¿Es posible cifrar archivos de Excel con esta biblioteca?

Sí, IronXL le permite cifrar y descifrar archivos de Excel. Puede asegurar sus documentos de Excel con contraseñas para proteger datos sensibles durante las operaciones de archivo.

¿Esta biblioteca admite recálculos de fórmulas en hojas de Excel?

IronXL admite recálculos automáticos de fórmulas, asegurando que cualquier cambio en los datos actualice automáticamente las fórmulas, como en Excel.

¿Cómo puedo leer valores de celdas específicas en una hoja de trabajo de Excel usando esta biblioteca?

Para leer valores de celdas específicas utilizando IronXL, puede hacer referencia a la celda utilizando la notación de Excel. Por ejemplo, sheet["A1"].StringValue recuperará el valor de cadena de la celda A1.

¿Puede esta biblioteca ser utilizada a través de diferentes sistemas operativos?

Sí, IronXL es compatible con múltiples sistemas operativos, incluidos Windows, Linux y macOS. También admite la implementación en entornos Docker, Azure y AWS.

¿Cuáles son las ventajas de usar esta biblioteca sobre MS Office Interop?

IronXL ofrece varias ventajas sobre MS Office Interop, como no requerir que Excel esté instalado en el sistema, mejor rendimiento en entornos de servidor y facilidad de uso con aplicaciones modernas .NET.

¿Hay una prueba gratuita disponible para esta biblioteca de Excel en C#?

Sí, IronXL ofrece una prueba gratuita de 30 días, permitiéndole probar sus características y capacidades antes de decidir sobre una licencia comercial para sus proyectos.

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

Equipo de soporte de Iron

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