C# Abrir hojas de cálculo Excel

Aprenda a utilizar las funciones C# open Excel Worksheet para trabajar con hojas de cálculo 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.


Cómo abrir una hoja de cálculo Excel en C#

  1. Instale la biblioteca Excel para leer archivos Excel.
  2. Carga el archivo 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. Biblioteca Access Excel C

Acceder a la Biblioteca Excel C# mediante DLL o instálelo utilizando su Gestor NuGet. 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 el comando WorkBook.Load() de IronXL para cargar archivos de 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");//Ruta del archivo Excel
WorkBook wb = WorkBook.Load("Path");//Ruta del archivo Excel
Dim wb As WorkBook = WorkBook.Load("Path") 'Ruta del archivo Excel
VB   C#

El archivo 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 Hoja de Trabajo específica de un archivo de Excel, IronXL provee el comando WorkBook.GetWorkSheet() función. 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")
VB   C#

La WorkSheet especificada se abrirá en ws con todos sus datos. También hay otras formas de abrir una Hoja de trabajo específica de un archivo Excel:

/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//por índice de hojas
WorkSheet ws = wb.WorkSheets [0];
//por defecto
WorkSheet ws = wb.DefaultWorkSheet; 
//para la primera hoja: 
WorkSheet ws = wb.WorkSheets.First();
//para la primera hoja o la hoja por defecto:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//por índice de hojas
WorkSheet ws = wb.WorkSheets [0];
//por defecto
WorkSheet ws = wb.DefaultWorkSheet; 
//para la primera hoja: 
WorkSheet ws = wb.WorkSheets.First();
//para la primera hoja o la hoja por defecto:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
'''
'''Open Excel Worksheet
'''anchor-open-excel-worksheet
'''*
'por índice de hojas
Dim ws As WorkSheet = wb.WorkSheets (0)
'por defecto
Dim ws As WorkSheet = wb.DefaultWorkSheet
'para la primera hoja: 
Dim ws As WorkSheet = wb.WorkSheets.First()
'para la primera hoja o la hoja por defecto:
Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()
VB   C#

Ahora sólo tenemos que obtener los datos de la hoja de trabajo 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 de celda específico de Excel WorkSheet.
  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 método para obtener datos de una hoja de trabajo de Excel es obtener los valores específicos de las celdas. Se puede acceder así:

string val = ws ["Cell Address"].ToString();
string val = ws ["Cell Address"].ToString();
Dim val As String = ws ("Cell Address").ToString()
VB   C#

ws es la WorkSheet del fichero 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()
VB   C#

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)
{
    //Cargar archivo Excel
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Abrir hoja de trabajo
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Obtener valor por dirección de celda
    Int32 int_val= ws ["C6"].Int32Value;
    //Obtener valor por Fila y Columna Dirección
    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)
{
    //Cargar archivo Excel
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Abrir hoja de trabajo
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Obtener valor por dirección de celda
    Int32 int_val= ws ["C6"].Int32Value;
    //Obtener valor por Fila y Columna Dirección
    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)
	'Cargar archivo Excel
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'Abrir hoja de trabajo
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Obtener valor por dirección de celda
	Dim int_val As Int32= ws ("C6").Int32Value
	'Obtener valor por Fila y Columna Dirección
	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
VB   C#

Este código muestra la siguiente salida:

Valor del fichero Excel sample.xlsx en row [3].columna [1] y C6 celda:

El índice de filas y columnas comienza en 0.

Abra Excel WorkSheets y obtenga los datos específicos de la convocatoria, y puede leer más sobre cómo leer datos de Excel en C# de hojas de cálculo de Excel ya abiertas.

4.2. Obtener datos de un rango específico

Ahora veamos cómo obtener datos en un rango específico desde una Hoja de Trabajo de Excel abierta usando IronXL.

IronXL proporciona una forma inteligente de obtener datos en un rango específico. Sólo hay que especificar los valores "de" a "a":

WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
VB   C#

Veamos un ejemplo de cómo utilizar el rango para obtener datos de una Hoja de Trabajo de Excel 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");
    //especifique la gama 
    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");
    //especifique la gama 
    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")
	'especifique la gama 
	For Each cell In ws ("B2:B10")
		Console.WriteLine("value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
VB   C#

El código anterior extraerá los datos de B2 a B10 de la siguiente manera:

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

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"]
VB   C#

Esto mostrará todos los valores de A1 a E1. Más información 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 que recorreremos todas las celdas de WorkSheet y accederemos a sus valores.

En este ejemplo, básicamente dos bucles están trabajando: uno es para recorrer cada fila de Excel WorkSheet 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");
    //acceder a todas las filas de la hoja de cálculo de Excel abierta
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //acceder a todas las columnas de una fila específica
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Acceso a cada celda de la columna especificada
            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");
    //acceder a todas las filas de la hoja de cálculo de Excel abierta
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //acceder a todas las columnas de una fila específica
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Acceso a cada celda de la columna especificada
            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")
	'acceder a todas las filas de la hoja de cálculo de Excel abierta
	For i As Integer = 0 To ws.Rows.Count() - 1
		'acceder a todas las columnas de una fila específica
		For j As Integer = 0 To ws.Columns.Count() - 1
			'Acceso a cada celda de la columna especificada
			Console.WriteLine(ws.Rows (i).Columns (j).Value.ToString())
		Next j
	Next i
	Console.ReadKey()
End Sub
VB   C#

La salida del código anterior mostrará el valor de cada celda de la Hoja de Trabajo completa de Excel abierta.


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