C# Abrir hojas de cálculo Excel

This article was translated from English: Does it need improvement?
Translated
View the article in English

Aprende a usar las funciones de C# para abrir hojas de cálculo de Excel y trabajar con hojas de cálculo de Excel y abrir todos los tipos de archivos, incluyendo (.xls, .csv, .tsv, y .xlsx). Abrir una hoja de cálculo de Excel, leer sus datos y manipularlos mediante programación es esencial para muchas personas que desarrollan aplicaciones. He aquí una solución para todo desarrollador que desee un método con menos líneas de código y tiempos de respuesta más rápidos.


How to Open Excel Worksheet in C#

  1. Instale la biblioteca Excel para leer archivos Excel.

  2. Cargue el archivo de Excel existente en un objeto Workbook.

  3. Establezca la hoja de cálculo de Excel por defecto.

  4. Leer el valor del Libro de Excel.

  5. Procese el valor como corresponda y muéstrelo.

    Primer paso

1. Acceder a la biblioteca de Excel C

Accede a la biblioteca Excel C# a través de DLL o instálala usando tu gestor de NuGet preferido. Una vez que haya accedido a la librería IronXL y la haya agregado a su proyecto, podrá utilizar todas las funciones que se indican a continuación para abrir hojas de cálculo de Excel C#.

Install-Package IronXL.Excel

Tutorial

2. Cargar archivo Excel

Utilice la función WorkBook.Load() de IronXL para cargar archivos Excel en el proyecto. Esta función requiere un parámetro de cadena, que es la ruta del archivo Excel que se va a abrir. Consulte aquí:

WorkBook wb = WorkBook.Load("Path");//Excel file path
WorkBook wb = WorkBook.Load("Path");//Excel file path
Dim wb As WorkBook = WorkBook.Load("Path") 'Excel file path
$vbLabelText   $csharpLabel

El archivo de Excel de la ruta especificada se cargará en wb. Ahora, tenemos que especificar la hoja de cálculo de Excel que se abrirá.


3. Abrir hoja de cálculo Excel

Para abrir una WorkSheet específica de un archivo de Excel, IronXL proporciona la función WorkBook.GetWorkSheet(). De este modo, podemos abrir fácilmente la hoja de cálculo por su nombre:

WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
Dim ws As WorkSheet = WorkBook.GetWorkSheet("SheetName")
$vbLabelText   $csharpLabel

El WorkSheet especificado se abrirá en ws con todos sus datos. También hay algunas otras formas de abrir una WorkSheet específica de un archivo de Excel:

/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//by sheet index
WorkSheet ws = wb.WorkSheets [0];
//for the default
WorkSheet ws = wb.DefaultWorkSheet; 
//for the first sheet: 
WorkSheet ws = wb.WorkSheets.First();
//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//by sheet index
WorkSheet ws = wb.WorkSheets [0];
//for the default
WorkSheet ws = wb.DefaultWorkSheet; 
//for the first sheet: 
WorkSheet ws = wb.WorkSheets.First();
//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
'''
'''Open Excel Worksheet
'''anchor-open-excel-worksheet
'''*
'by sheet index
Dim ws As WorkSheet = wb.WorkSheets (0)
'for the default
Dim ws As WorkSheet = wb.DefaultWorkSheet
'for the first sheet: 
Dim ws As WorkSheet = wb.WorkSheets.First()
'for the first or default sheet:
Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

Ahora, solo necesitamos obtener datos de la WorkSheet de Excel abierta.


4. Obtener datos de la hoja de trabajo

Podemos obtener datos de una WorkSheet de Excel abierta de las siguientes maneras:

  1. Obtener un valor específico de la celda de WorkSheet de Excel.

  2. Obtener datos en un Rango específico.

  3. Obtener todos los datos de WorkSheet.

    Veamos uno a uno cómo obtener datos de diferentes maneras con estos ejemplos:

4.1. Obtener el valor de una celda específica

El primer enfoque para obtener datos de un WorkSheet de Excel es obtener los valores de celdas específicas. Se puede acceder así:

string val = ws ["Cell Address"].ToString();
string val = ws ["Cell Address"].ToString();
Dim val As String = ws ("Cell Address").ToString()
$vbLabelText   $csharpLabel

ws es el WorkSheet del archivo Excel, como veremos en los siguientes ejemplos. También se puede acceder a valores de celda específicos especificando "índice de fila" e "índice de columna".

string val=ws.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
string val=ws.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
Dim val As String=ws.Rows (RowIndex).Columns (ColumnIndex).Value.ToString()
$vbLabelText   $csharpLabel

Veamos un ejemplo de cómo abrir un archivo Excel en nuestro proyecto C# y obtener valores específicos de celdas utilizando ambas formas:

/**
Get Cell Value
anchor-get-specific-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    //Load Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Open WorkSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Get value By Cell Address
    Int32 int_val= ws ["C6"].Int32Value;
    //Get value by Row and Column Address
    string str_val=ws.Rows [3].Columns [1].Value.ToString();

    Console.WriteLine("Getting Value by Cell Address: {0}",int_val);
    Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val);
    Console.ReadKey();
}
/**
Get Cell Value
anchor-get-specific-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    //Load Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Open WorkSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Get value By Cell Address
    Int32 int_val= ws ["C6"].Int32Value;
    //Get value by Row and Column Address
    string str_val=ws.Rows [3].Columns [1].Value.ToString();

    Console.WriteLine("Getting Value by Cell Address: {0}",int_val);
    Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val);
    Console.ReadKey();
}
'''
'''Get Cell Value
'''anchor-get-specific-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'Load Excel file
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'Open WorkSheet
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Get value By Cell Address
	Dim int_val As Int32= ws ("C6").Int32Value
	'Get value by Row and Column Address
	Dim str_val As String=ws.Rows (3).Columns (1).Value.ToString()

	Console.WriteLine("Getting Value by Cell Address: {0}",int_val)
	Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val)
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

Este código muestra la siguiente salida:

1output related to 4.1. Obtener el valor de una celda específica

Valor del archivo de Excel sample.xlsx en fila [3].Columna [1] y celda C6:

1excel related to 4.1. Obtener el valor de una celda específica

El índice de las filas y columnas comienza desde 0.

Abra WorkSheets de Excel y obtenga los datos específicos de la llamada, y puede leer más sobre cómo leer datos de Excel en C# desde Worksheets de Excel ya abiertos.

4.2. Obtener datos de un rango específico

Ahora veamos cómo obtener datos en un rango específico de una WorkSheet abierta usando IronXL.

IronXL proporciona una forma inteligente de obtener datos en un rango específico. Simplemente especificamos los valores from y to:

WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
$vbLabelText   $csharpLabel

Veamos un ejemplo de cómo usar el rango para obtener datos de una Excel WorkSheet abierta:

/**
Get Data from Range
anchor-get-data-from-specific-range
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //specify the range 
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
/**
Get Data from Range
anchor-get-data-from-specific-range
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //specify the range 
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
'''
'''Get Data from Range
'''anchor-get-data-from-specific-range
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'specify the range 
	For Each cell In ws ("B2:B10")
		Console.WriteLine("value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

El código anterior extraerá datos desde B2 hasta B10 de la siguiente manera:

2output related to 4.2. Obtener datos de un rango específico

Podemos ver los valores del archivo de Excel sample.xlsx, desde B2 hasta B10:

2excel related to 4.2. Obtener datos de un rango específico

4.3. Obtener datos de una fila

También podemos describir un rango para una fila concreta. Por ejemplo:

WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
$vbLabelText   $csharpLabel

Esto mostrará todos los valores desde A1 hasta E1. Lea más sobre C# Excel Ranges y cómo trabajar con diferentes identificaciones de filas y columnas.

4.4. Obtener todos los datos de la hoja de trabajo

Obtener todos los datos de las celdas de la Hoja de Trabajo de Excel abierta también es fácil usando IronXL. Para esta tarea, necesitamos acceder al valor de cada celda por índices de fila y columna. Veamos el siguiente ejemplo, en el cual recorreremos todas las celdas de WorkSheet y accederemos a sus valores.

En este ejemplo, básicamente están funcionando dos bucles: uno es para recorrer cada fila del WorkSheet de Excel y el otro es para recorrer cada columna de una fila específica. De este modo, se puede acceder fácilmente al valor de cada celda.

/**
Get All Data
anchor-get-all-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample2.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //access all rows of open Excel WorkSheet
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //access all columns of specific row
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Access each cell for specified column
            Console.WriteLine(ws.Rows [i].Columns [j].Value.ToString());
        }
    }
    Console.ReadKey();
}
/**
Get All Data
anchor-get-all-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample2.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //access all rows of open Excel WorkSheet
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //access all columns of specific row
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Access each cell for specified column
            Console.WriteLine(ws.Rows [i].Columns [j].Value.ToString());
        }
    }
    Console.ReadKey();
}
'''
'''Get All Data
'''anchor-get-all-data-from-worksheet
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample2.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'access all rows of open Excel WorkSheet
	For i As Integer = 0 To ws.Rows.Count() - 1
		'access all columns of specific row
		For j As Integer = 0 To ws.Columns.Count() - 1
			'Access each cell for specified column
			Console.WriteLine(ws.Rows (i).Columns (j).Value.ToString())
		Next j
	Next i
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

La salida del código anterior mostrará el valor de cada celda del WorkSheet completo abierto en Excel.


Acceso rápido a tutoriales

Documentation related to Acceso rápido a tutoriales

Recurso de referencia API

Utilice el recurso Referencia de la API IronXL como guía de todas las funciones y clases para utilizar en sus proyectos, así como espacios de nombres, campos de métodos, enums y conjuntos de características.

Recurso de referencia API
Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.