C# Tutorial de lectura de archivos Excel

por Christian Findlay

Este tutorial explica cómo leer un archivo Excel en C#, así como realizar tareas cotidianas como la validación de datos, la conversión de bases de datos, las integraciones Web API y la modificación de fórmulas. Este artículo hace referencia a ejemplos de código que utilizan la biblioteca IronXL .NET Excel.


Visión general

IronXL facilita la lectura y edición de documentos de Microsoft Excel con C#. IronXL no requiere Microsoft Excel ni tampoco Interop. De hecho, IronXL proporciona una API más rápida e intuitiva que Microsoft.Office.Interop.Excel..

IronXL Incluye:

  • Asistencia dedicada al producto por parte de nuestros ingenieros de .NET
  • Instalación sencilla mediante Microsoft Visual Studio
  • Prueba gratuita para el desarrollo. Licencias de $599.

    Leer y crear archivos Excel en C# y VB.NET es fácil utilizando la librería de software IronXL.

Lectura de archivos .XLS y .XLSX de Excel con IronXL

A continuación se muestra un resumen del flujo de trabajo general para leer archivos de Excel utilizando IronXL:

  1. Instale la biblioteca IronXL Excel. Podemos hacerlo utilizando nuestro Paquete NuGet o descargando el .Net Excel DLL.
  2. Utilice el método WorkBook.Load para leer cualquier documento XLS, XLSX o CSV.
  3. Obtener los valores de las celdas utilizando una sintaxis intuitiva: `hoja ["A11"]ValorDecimal
:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-1.cs
using IronXL;
using System;
using System.Linq;

//  Los formatos de hoja de cálculo compatibles para la lectura son: XLSX, XLS, CSV y TSV
WorkBook workBook = WorkBook.Load("test.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

//  Seleccionar celdas fácilmente en notación Excel y devolver el valor calculado
int cellValue = workSheet["A2"].IntValue;

//  Lee desde Rangos de células con elegancia.
foreach (var cell in workSheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

//  Operaciones avanzadas
//  Calcular valores agregados como Mín, Máx y Suma
decimal sum = workSheet["A2:A10"].Sum();

//  Compatible con Linq
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
Imports IronXL
Imports System
Imports System.Linq

'  Los formatos de hoja de cálculo compatibles para la lectura son: XLSX, XLS, CSV y TSV
Private workBook As WorkBook = WorkBook.Load("test.xlsx")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

'  Seleccionar celdas fácilmente en notación Excel y devolver el valor calculado
Private cellValue As Integer = workSheet("A2").IntValue

'  Lee desde Rangos de células con elegancia.
For Each cell In workSheet("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell

'  Operaciones avanzadas
'  Calcular valores agregados como Mín, Máx y Suma
Dim sum As Decimal = workSheet("A2:A10").Sum()

'  Compatible con Linq
Dim max As Decimal = workSheet("A2:A10").Max(Function(c) c.DecimalValue)
VB   C#

Los ejemplos de código utilizados en las siguientes secciones de este tutorial (junto con el código del proyecto de muestra) trabajará con tres hojas de cálculo Excel de ejemplo (ver más abajo):


Tutorial

1. Descargue GRATIS la biblioteca IronXL C&num

Biblioteca NuGet C# para Excel

Instalar con NuGet

Install-Package IronXL.Excel
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Lo primero que tenemos que hacer es instalar la librería IronXL.Excel, que añade funcionalidad Excel al framework .NET.

La instalación de IronXL.Excel, se logra más fácilmente utilizando nuestro paquete NuGet, aunque también puede optar por instalar manualmente el paquete DLL a su proyecto o a su caché global de ensamblados.

Instalación del paquete NuGet de IronXL

  1. En Visual Studio, haz clic con el botón derecho en el proyecto y selecciona "Administrar paquetes NuGet...".
  2. Busque el paquete IronXL.Excel y haga clic en el botón Instalar para añadirlo al proyecto.

    Otra forma de instalar la librería IronXL es utilizando la Consola del Gestor de Paquetes NuGet:

  3. Acceda a la consola del gestor de paquetes
  4. Tipo > Install-Package IronXL.Excel
  PM > Install-Package IronXL.Excel

Además, puede ver el paquete en el sitio web de NuGet

Instalación manual

También podemos empezar descargando IronXL .NET Excel DLL e instalar manualmente en Visual Studio.

2. Cargar un libro de Excel

En Libro de trabajo representa una hoja Excel. Para abrir un fichero Excel usando C#, usamos el método WorkBook.Load, especificando la ruta del fichero Excel.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-2.cs
WorkBook workBook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
Dim workBook As WorkBook = WorkBook.Load("Spreadsheets\\GDP.xlsx")
VB   C#

Muestra: ExcelToDBProcessor

Cada WorkBook puede tener varios Hoja de trabajo objetos. Cada uno de ellos representa una única hoja de cálculo del documento Excel. Utiliza el WorkBook.GetWorkSheet para recuperar una referencia a una hoja de cálculo Excel específica.


:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-3.cs

Muestra: ExcelToDB

Creación de nuevos documentos Excel

Para crear un nuevo documento Excel, construya un nuevo objeto WorkBook con un tipo de archivo válido.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-4.cs
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);
Dim workBook As New WorkBook(ExcelFileFormat.XLSX)
VB   C#

Muestra: ApiToExcelProcessor

Nota: Utilice ExcelFileFormat.XLS para las versiones anteriores de Microsoft Excel. (95 y anteriores).

Añadir una hoja de cálculo a un documento Excel

Como se explicó anteriormente, un WorkBook de IronXL contiene una colección de una o más WorkSheets.

Este es el aspecto de un libro con dos hojas de cálculo en Excel.

Este es el aspecto de un libro con dos hojas de cálculo en Excel.

Para crear una nueva Hoja de Trabajo llame a WorkBook.CreateWorkSheet con el nombre de la hoja de trabajo.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-5.cs
WorkSheet workSheet = workBook.GetWorkSheet("GDPByCountry");
Dim workSheet As WorkSheet = workBook.GetWorkSheet("GDPByCountry")
VB   C#

3. Acceder a los valores de las celdas

Leer y editar una celda individual

El acceso a los valores de las celdas individuales de una hoja de cálculo se realiza recuperando la celda deseada de su Hoja de trabajo. como se muestra a continuación:

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-16.cs
WorkBook workBook = WorkBook.Load("test.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
IronXL.Cell cell = workSheet["B1"].First();
Dim workBook As WorkBook = WorkBook.Load("test.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim cell As IronXL.Cell = workSheet("B1").First()
VB   C#

IronXL "Celda representa una celda individual en una hoja de cálculo Excel. Contiene propiedades y métodos que permiten a los usuarios acceder y modificar directamente el valor de la celda.

Cada objeto WorkSheet gestiona un índice de objetos Cell correspondientes a cada valor de celda de una hoja de cálculo de Excel. En el código fuente anterior, hacemos referencia a la celda deseada por su índice de fila y columna (celda B1 en este caso) utilizando la sintaxis estándar de indexación de matrices.

Con una referencia al objeto Cell, podemos leer y escribir datos desde y hacia una celda de la hoja de cálculo:

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-17.cs
IronXL.Cell cell = workSheet["B1"].First();
string value = cell.StringValue;   //  Leer el valor de la celda como una cadena
Console.WriteLine(value);

cell.Value = "10.3289";           //  Escribir un nuevo valor en la celda
Console.WriteLine(cell.StringValue);
Dim cell As IronXL.Cell = workSheet("B1").First()
Dim value As String = cell.StringValue '  Leer el valor de la celda como una cadena
Console.WriteLine(value)

cell.Value = "10.3289" '  Escribir un nuevo valor en la celda
Console.WriteLine(cell.StringValue)
VB   C#

Leer y escribir un rango de valores de celda

La clase Range representa una colección bidimensional de objetos Cell. Esta colección se refiere a un rango literal de celdas de Excel. Obtener rangos utilizando el indexador de cadenas en un objeto WorkSheet.

El argumento texto es la coordenada de una celda (por ejemplo, "A1", como se ha mostrado anteriormente) o un tramo de celdas de izquierda a derecha de arriba a abajo (Por ejemplo, "B2:E5".). También es posible llamar a GetRange en una WorkSheet.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-6.cs
Range range = workSheet["D2:D101"];
Dim range As Range = workSheet("D2:D101")
VB   C#

Muestra: DataValidation

Existen varias formas de leer o editar los valores de las celdas de un Rango. Si se conoce el recuento, utilice un bucle For.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-7.cs
//  Iterar por las filas
for (var y = 2; y <= 101; y++)
{
    var result = new PersonValidationResult { Row = y };
    results.Add(result);

    //  Obtener todas las celdas de la persona
    var cells = workSheet[$"A{y}:E{y}"].ToList();

    //  Validar el número de teléfono (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    //  Validar la dirección de correo electrónico (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    //  Obtener la fecha sin procesar en el formato Mes Día[sufijo], Año (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
'  Iterar por las filas
For y = 2 To 101
	Dim result = New PersonValidationResult With {.Row = y}
	results.Add(result)

	'  Obtener todas las celdas de la persona
	Dim cells = workSheet($"A{y}:E{y}").ToList()

	'  Validar el número de teléfono (1 = B)
	Dim phoneNumber = cells(1).Value
	result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, CStr(phoneNumber))

	'  Validar la dirección de correo electrónico (3 = D)
	result.EmailErrorMessage = ValidateEmailAddress(CStr(cells(3).Value))

	'  Obtener la fecha sin procesar en el formato Mes Día[sufijo], Año (4 = E)
	Dim rawDate = CStr(cells(4).Value)
	result.DateErrorMessage = ValidateDate(rawDate)
Next y
VB   C#

Muestra: DataValidation

Añadir una fórmula a una hoja de cálculo

Establecer fórmula de Cells con el Fórmula propiedad.

El siguiente código itera a través de cada estado y pone un porcentaje total en la columna C.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-13.cs
//  Iterar a través de todas las filas con un valor
for (var y = 2 ; y < i ; y++)
{
    //  Obtener la célula C
    Cell cell = workSheet[$"C{y}"].First();

    //  Establezca la fórmula de la columna Porcentaje del total
    cell.Formula = $"=B{y}/B{i}";
}
'  Iterar a través de todas las filas con un valor
Dim y = 2
Do While y < i
	'  Obtener la célula C
	Dim cell As Cell = workSheet($"C{y}").First()

	'  Establezca la fórmula de la columna Porcentaje del total
	cell.Formula = $"=B{y}/B{i}"
	y += 1
Loop
VB   C#

Muestra: AddFormulaeProcessor

Validar datos de hojas de cálculo

Utiliza IronXL para validar una hoja de datos. El ejemplo DataValidation utiliza libphonenumber-csharp para validar los números de teléfono y utiliza las API estándar de C# para validar las direcciones de correo electrónico y las fechas.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-8.cs
//  Iterar por las filas
for (var i = 2; i <= 101; i++)
{
    var result = new PersonValidationResult { Row = i };
    results.Add(result);

    //  Obtener todas las celdas de la persona
    var cells = worksheet[$"A{i}:E{i}"].ToList();

    //  Validar el número de teléfono (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    //  Validar la dirección de correo electrónico (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    //  Obtener la fecha sin procesar en el formato Mes Día[sufijo], Año (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
'  Iterar por las filas
For i = 2 To 101
	Dim result = New PersonValidationResult With {.Row = i}
	results.Add(result)

	'  Obtener todas las celdas de la persona
	Dim cells = worksheet($"A{i}:E{i}").ToList()

	'  Validar el número de teléfono (1 = B)
	Dim phoneNumber = cells(1).Value
	result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, CStr(phoneNumber))

	'  Validar la dirección de correo electrónico (3 = D)
	result.EmailErrorMessage = ValidateEmailAddress(CStr(cells(3).Value))

	'  Obtener la fecha sin procesar en el formato Mes Día[sufijo], Año (4 = E)
	Dim rawDate = CStr(cells(4).Value)
	result.DateErrorMessage = ValidateDate(rawDate)
Next i
VB   C#

El código anterior recorre cada fila de la hoja de cálculo y obtiene las celdas como una lista. Cada método validates comprueba el valor de una celda y devuelve un mensaje de error si el valor no es válido.

Este código crea una nueva hoja, especifica las cabeceras y emite los resultados del mensaje de error para que haya un registro de los datos no válidos.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-9.cs
var resultsSheet = workBook.CreateWorkSheet("Results");
resultsSheet["A1"].Value = "Row";
resultsSheet["B1"].Value = "Valid";
resultsSheet["C1"].Value = "Phone Error";
resultsSheet["D1"].Value = "Email Error";
resultsSheet["E1"].Value = "Date Error";
for (var i = 0; i < results.Count; i++)
{
    var result = results[i];
    resultsSheet[$"A{i + 2}"].Value = result.Row;
    resultsSheet[$"B{i + 2}"].Value = result.IsValid ? "Yes" : "No";
    resultsSheet[$"C{i + 2}"].Value = result.PhoneNumberErrorMessage;
    resultsSheet[$"D{i + 2}"].Value = result.EmailErrorMessage;
    resultsSheet[$"E{i + 2}"].Value = result.DateErrorMessage;
}
workBook.SaveAs(@"Spreadsheets\\PeopleValidated.xlsx");
Dim resultsSheet = workBook.CreateWorkSheet("Results")
resultsSheet("A1").Value = "Row"
resultsSheet("B1").Value = "Valid"
resultsSheet("C1").Value = "Phone Error"
resultsSheet("D1").Value = "Email Error"
resultsSheet("E1").Value = "Date Error"
For i = 0 To results.Count - 1
	Dim result = results(i)
	resultsSheet($"A{i + 2}").Value = result.Row
	resultsSheet($"B{i + 2}").Value = If(result.IsValid, "Yes", "No")
	resultsSheet($"C{i + 2}").Value = result.PhoneNumberErrorMessage
	resultsSheet($"D{i + 2}").Value = result.EmailErrorMessage
	resultsSheet($"E{i + 2}").Value = result.DateErrorMessage
Next i
workBook.SaveAs("Spreadsheets\\PeopleValidated.xlsx")
VB   C#

4. Exportación de datos mediante Entity Framework

Utilice IronXL para exportar datos a una base de datos o convertir una hoja de cálculo de Excel en una base de datos. El ejemplo ExcelToDB lee una hoja de cálculo con el PIB por países y luego exporta esos datos a un SQLite.

Utiliza EntityFramework para construir la base de datos y luego exportar los datos línea por línea.

Añade los paquetes NuGet de SQLite Entity Framework.

EntityFramework permite crear un objeto modelo que puede exportar datos a la base de datos.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-10.cs
public class Country
    {
        [Key]
        public Guid Key { get; set; }
        public string Name { get; set; }
        public decimal GDP { get; set; }
    }
Public Class Country
		<Key>
		Public Property Key() As Guid
		Public Property Name() As String
		Public Property GDP() As Decimal
End Class
VB   C#

Para utilizar una base de datos diferente, instale el paquete NuGet correspondiente y busque el equivalente de UseSqLite()

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-11.cs
public class CountryContext : DbContext
    {
        public DbSet<Country> Countries { get; set; }
        public CountryContext()
        {
            //TODO: Hacer async
            Database.EnsureCreated();
        }
        /// <summary>
        /// Configurar el contexto para utilizar Sqlite
        /// </summary>
        /// <param name="optionsBuilder"></param>
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            var connection = new SqliteConnection($"Data Source=Country.db");
            connection.Open();
            var command = connection.CreateCommand();
            //Crear la base de datos si aún no existe
            command.CommandText = $"PRAGMA foreign_keys = ON;";
            command.ExecuteNonQuery();
            optionsBuilder.UseSqlite(connection);
            base.OnConfiguring(optionsBuilder);
        }
    }
Public Class CountryContext
	Inherits DbContext

		Public Property Countries() As DbSet(Of Country)
		Public Sub New()
			'TODO: Hacer async
			Database.EnsureCreated()
		End Sub
		''' <summary>
		''' Configurar el contexto para utilizar Sqlite
		''' </summary>
		''' <param name="optionsBuilder"></param>
		Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
			Dim connection = New SqliteConnection($"Data Source=Country.db")
			connection.Open()
			Dim command = connection.CreateCommand()
			'Crear la base de datos si aún no existe
			command.CommandText = $"PRAGMA foreign_keys = ON;"
			command.ExecuteNonQuery()
			optionsBuilder.UseSqlite(connection)
			MyBase.OnConfiguring(optionsBuilder)
		End Sub
End Class
VB   C#

Crear un CountryContext, iterar a través del rango para crear cada registro, y luego SaveAsync para enviar los datos a la base de datos.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-12.cs
public async Task ProcessAsync()
{
    //Obtener la primera hoja de cálculo
    var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
    var worksheet = workbook.GetWorkSheet("GDPByCountry");
    //Crear la conexión a la base de datos
    using (var countryContext = new CountryContext())
    {
        //Iterar a través de todas las celdas
        for (var i = 2; i <= 213; i++)
        {
            //Obtener la gama de A-B
            var range = worksheet[$"A{i}:B{i}"].ToList();
            //Crear una entidad País para guardarla en la base de datos
            var country = new Country
            {
                Name = (string)range[0].Value,
                GDP = (decimal)(double)range[1].Value
            };
            //Añadir la entidad
            await countryContext.Countries.AddAsync(country);
        }
        //Confirmar los cambios en la base de datos
        await countryContext.SaveChangesAsync();
    }
}
Public Async Function ProcessAsync() As Task
	'Obtener la primera hoja de cálculo
	Dim workbook = WorkBook.Load("Spreadsheets\\GDP.xlsx")
	Dim worksheet = workbook.GetWorkSheet("GDPByCountry")
	'Crear la conexión a la base de datos
	Using countryContext As New CountryContext()
		'Iterar a través de todas las celdas
		For i = 2 To 213
			'Obtener la gama de A-B
			Dim range = worksheet($"A{i}:B{i}").ToList()
			'Crear una entidad País para guardarla en la base de datos
			Dim country As New Country With {
				.Name = CStr(range(0).Value),
				.GDP = CDec(CDbl(range(1).Value))
			}
			'Añadir la entidad
			Await countryContext.Countries.AddAsync(country)
		Next i
		'Confirmar los cambios en la base de datos
		Await countryContext.SaveChangesAsync()
	End Using
End Function
VB   C#

Muestra: ExcelToDB

5. Descarga de datos de una API a una hoja de cálculo

La siguiente llamada realiza una llamada REST con RestClient.Net. Descarga JSON y lo convierte en una "Lista" del tipo RestCountry. A continuación, es fácil iterar por cada país y guardar los datos de la API REST en una hoja de cálculo Excel.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-14.cs
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();
Dim client As New Client(New Uri("https://restcountries.eu/rest/v2/"))
Dim countries As List(Of RestCountry) = Await client.GetAsync(Of List(Of RestCountry))()
VB   C#

Muestra: ApiToExcel

Este es el aspecto de los datos JSON de la API.

El siguiente código recorre los países y establece el Nombre, la Población, la Región, el CódigoNumérico y los 3 Idiomas principales en la hoja de cálculo.

:path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-15.cs
for (var i = 2; i < countries.Count; i++)
{
    var country = countries[i];
    //Establecer los valores básicos
    workSheet[$"A{i}"].Value = country.name;
    workSheet[$"B{i}"].Value = country.population;
    workSheet[$"G{i}"].Value = country.region;
    workSheet[$"H{i}"].Value = country.numericCode;
    //Iterar por idiomas
    for (var x = 0; x < 3; x++)
    {
        if (x > (country.languages.Count - 1)) break;
        var language = country.languages[x];
        //Obtener la letra de la columna
        var columnLetter = GetColumnLetter(4 + x);
        //Establecer el nombre del idioma
        workSheet[$"{columnLetter}{i}"].Value = language.name;
    }
}
For i = 2 To countries.Count - 1
	Dim country = countries(i)
	'Establecer los valores básicos
	workSheet($"A{i}").Value = country.name
	workSheet($"B{i}").Value = country.population
	workSheet($"G{i}").Value = country.region
	workSheet($"H{i}").Value = country.numericCode
	'Iterar por idiomas
	For x = 0 To 2
		If x > (country.languages.Count - 1) Then
			Exit For
		End If
		Dim language = country.languages(x)
		'Obtener la letra de la columna
		Dim columnLetter = GetColumnLetter(4 + x)
		'Establecer el nombre del idioma
		workSheet($"{columnLetter}{i}").Value = language.name
	Next x
Next i
VB   C#

Referencia de objetos y recursos

También puede encontrar el Documentación de la clase IronXL dentro del Objeto de Referencia de gran valor.

Además, hay otros tutoriales que pueden arrojar luz en otros aspectos de IronXL.Excel incluyendo Creación de, Abrir, escribir, editar, guardar y exportar XLS, XLSX y CSV sin utilizar Excel Interop.

Resumen

IronXL.Excel es solo .NET biblioteca de software para la lectura de una amplia variedad de formatos de hoja de cálculo. No requiere Microsoft Excel y no depende de Interop.

Si la biblioteca .NET le está resultando útil para modificar archivos de Excel, puede que también le interese explorar Biblioteca cliente de la API de Google Sheets para .NET que permite modificar Google Sheets.


Acceso rápido a tutoriales

Descargar este tutorial como C# Código fuente

El código fuente completo y gratuito de C# for Excel para este tutorial está disponible para descargar como un archivo de proyecto comprimido de Visual Studio 2017.

Descargar

Explore este tutorial en GitHub

El código fuente de este proyecto está disponible en C# y VB.NET en GitHub.

Utilice este código como una manera fácil de ponerse en marcha en solo unos minutos. El proyecto se guarda como un proyecto de Microsoft Visual Studio 2017, pero es compatible con cualquier IDE de .NET.

Cómo leer un archivo Excel en C# en GitHub

Ver la referencia de la API

Explore la Referencia de la API para IronXL, que describe los detalles de todas las características, espacios de nombres, clases, métodos, campos y enums de IronXL.

Ver la referencia de la API
Director de soluciones .NET trabajando con documentos Microsoft Excel IO

Christian Findlay

Jefe de equipo de desarrollo de software

Christian crea software para el sector sanitario y dirige un equipo. Christian tiene años de experiencia en la integración con sistemas de todo tipo. IronXL permite a Christian importar y manipular datos de diferentes fuentes para automatizar tareas repetitivas y validar datos de entrada de fuentes de terceros.