VB .NET Leer & Crear archivos de Excel (Tutorial de ejemplo de código)

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

Los desarrolladores necesitan un método sencillo y sin complicaciones para acceder a los archivos Excel de VB .NET. En este tutorial, usaremos IronXL para leer archivos Excel de VB dotnet y acceder a todos los datos para el uso de nuestro proyecto. Aprenderemos a crear hojas de cálculo en todos los formatos( .xls, .xlsx, .csv y .tsv.)así como la configuración de estilos de celda y la inserción de datos mediante la programación en Excel con VB.NET.


Primer paso

1. Biblioteca Excel para VB.NET

Obtenga la librería IronXL Excel para VB.NET usandoDescarga DLL oNuGet. IronXL es nuestro Paso 1 para acceder rápidamente a los datos de Excel en nuestros proyectos VB.NET, y lo que vamos a utilizar para este tutorial(libre para el desarrollo).

Install-Package IronXL.Excel

Tutorial práctico

2. Crear archivos Excel en VB.NET

IronXL ofrece el método más sencillo para crear un archivo Excel(Formato `.xlsx) en un proyecto VB.NET. Después de esto, podemos insertar datos y también establecer propiedades de celda como estilos de fuente o bordes.

2.1. Crear fichero Excel

Primero vamos a crear un WorkBook:

Dim wb As New WorkBook
Dim wb As New WorkBook
VB.NET

El código anterior sirve para crear un nuevo archivo Excel. Por defecto, su extensión es .xlsx.

2.2. Crear archivo XLS

En el caso de que desee crear un archivo de extensión .xls, puede utilizar este código.

Dim wb As New WorkBook(ExcelFileFormat.XLS)
Dim wb As New WorkBook(ExcelFileFormat.XLS)
VB.NET

2.3. Crear hoja de cálculo

Después de crear el Libro de Trabajo, se puede crear una Hoja de Trabajo Excel de la siguiente manera:

Dim ws1 As WorkSheet = wb.CreateWorkSheet("Sheet1")
Dim ws1 As WorkSheet = wb.CreateWorkSheet("Sheet1")
VB.NET

El código anterior creará un nuevo WorkSheet ws1 con el nombre sheet1 en el WorkBook wb.

2.4. Crear varias hojas de cálculo

Se puede crear cualquier número de hojas de trabajo de la misma manera:

Dim ws2 As WorkSheet = wb.CreateWorkSheet("Sheet2")
Dim ws3 As WorkSheet = wb.CreateWorkSheet("Sheet3")
Dim ws2 As WorkSheet = wb.CreateWorkSheet("Sheet2")
Dim ws3 As WorkSheet = wb.CreateWorkSheet("Sheet3")
VB.NET

3. Insertar datos en la hoja de cálculo

3.1. Insertar datos en celdas

Ahora podemos insertar datos fácilmente en las celdas de la Hoja de Trabajo de la siguiente manera:

 worksheet("CellAddress").Value = "MyValue"
 worksheet("CellAddress").Value = "MyValue"
VB.NET

Por ejemplo, los datos de la hoja de cálculo ws1 pueden insertarse como:

ws1("A1").Value = "Hello World"
ws1("A1").Value = "Hello World"
VB.NET

El código anterior escribirá Hola Mundo en la celda A1 de la Hoja de Trabajo ws1.

3.2. Insertar datos en un rango

También es posible escribir datos en muchas celdas utilizando la función rango de la siguiente manera:

ws1("A3:A8").Value = "NewValue"
ws1("A3:A8").Value = "NewValue"
VB.NET

El código anterior escribirá NuevoValor de la celda A3 a A8 en la hoja de cálculo ws1.

3.3. Ejemplo de creación y edición de hojas de cálculo

Crearemos un nuevo archivo Excel Sample.xlsx e insertaremos algunos datos en él para mostrar el código que hemos aprendido anteriormente.

/**
Create and Edit Excel
anchor-create-and-edit-worksheets-example
**/
Imports IronXL
Sub Main()
    Dim wb As New WorkBook(ExcelFileFormat.XLSX)
    Dim ws1 As WorkSheet = wb.CreateWorkSheet("Sheet1")
    ws1("A1").Value = "Hello"
    ws1("A2").Value = "World"
    ws1("B1:B8").Value = "RangeValue"
    wb.SaveAs("Sample.xlsx")
End Sub
/**
Create and Edit Excel
anchor-create-and-edit-worksheets-example
**/
Imports IronXL
Sub Main()
    Dim wb As New WorkBook(ExcelFileFormat.XLSX)
    Dim ws1 As WorkSheet = wb.CreateWorkSheet("Sheet1")
    ws1("A1").Value = "Hello"
    ws1("A2").Value = "World"
    ws1("B1:B8").Value = "RangeValue"
    wb.SaveAs("Sample.xlsx")
End Sub
VB.NET

Nota: Por defecto, el nuevo archivo Excel se creará en la carpeta bin>Debug del proyecto:

wb.SaveAs(@"E:\IronXL\Muestra.xlsx")

Aquí está la captura de pantalla de nuestro archivo Excel recién creado sample.xlsx:

Doc5 1 related to 3.3. Ejemplo de creación y edición de hojas de cálculo

Queda claro lo simple que puede ser crear archivos Excel usando IronXL en una Aplicación VB.NET.


4. Leer archivo Excel en VB.NET

IronXl también proporciona un enfoque sencillo para leer Excel(.xlsx) en su proyecto VB dotnet. Para ello, basta con obtener el documento Excel, cargarlo en el proyecto, leer sus datos y utilizarlo según sus necesidades.

Sigue estos pasos:

4.1. Acceder a un archivo Excel en un proyecto

WorkBook es la clase de IronXL cuyo objeto proporciona acceso completo al archivo Excel y sus funciones. Por ejemplo, si queremos acceder al archivo de Excel, basta con utilizar:

WorkBook wb = WorkBook.Load("sample.xlsx") 'Excel file path
WorkBook wb = WorkBook.Load("sample.xlsx") 'Excel file path
VB.NET

En el código anterior, WorkBook.Load()Funcióncargar muestra.xlsx en wb. Se puede realizar cualquier tipo de función en wb accediendo a una Hoja de Trabajo específica del archivo Excel.

4.2. Hoja de trabajo específica de acceso

Para acceder a una hoja específica en Excel, tome la clase WorkSheet, que se puede utilizar de las siguientes maneras diferentes:

4.2.1. Por nombre de hoja

Dim ws As WorkSheet = WorkBook.GetWorkSheet("sheet1") 'by sheet name
Dim ws As WorkSheet = WorkBook.GetWorkSheet("sheet1") 'by sheet name
VB.NET

wb` es el WorkBook declarado en la sección anterior.

4.2.2. Por índice de hojas

 Dim ws As WorkSheet = WorkBook.WorkSheets(0) 'by sheet index
 Dim ws As WorkSheet = WorkBook.WorkSheets(0) 'by sheet index
VB.NET

4.2.3. Hoja por defecto

Dim ws As WorkSheet = workbook.DefaultWorkSheet() 'for the default sheet: 
Dim ws As WorkSheet = workbook.DefaultWorkSheet() 'for the default sheet: 
VB.NET

4.2.4. Primera hoja

Dim sheet As WorkSheet = workbook.WorkSheets.FirstOrDefault() 'for the first sheet:
Dim sheet As WorkSheet = workbook.WorkSheets.FirstOrDefault() 'for the first sheet:
VB.NET

4.2.1. Primera hoja o hoja por defecto

Dim sheet As WorkSheet = workbook.WorkSheets.FirstOrDefault() 'for the first or default sheet:
Dim sheet As WorkSheet = workbook.WorkSheets.FirstOrDefault() 'for the first or default sheet:
VB.NET

Después de obtener la hoja de Excel ws , puede obtener cualquier tipo de datos de la correspondiente WorkSheet del archivo de Excel y realizar todas las funciones de Excel.


5. Acceder a los datos de la hoja de trabajo

De esta forma se puede acceder a los datos desde la hoja Excel ws:

Dim int_Value As Integer = sheet("A2").IntValue 'for integer
Dim str_value As String = sheet("A2").ToString() 'for string
Dim int_Value As Integer = sheet("A2").IntValue 'for integer
Dim str_value As String = sheet("A2").ToString() 'for string
VB.NET

5.1. Datos de la columna específica

También es posible obtener datos de muchas celdas de una columna específica de la siguiente manera:

For Each cell In sheet("A2:A10")
    Console.WriteLine("value is: {0}", cell.Text)       
Next cell
For Each cell In sheet("A2:A10")
    Console.WriteLine("value is: {0}", cell.Text)       
Next cell
VB.NET

Mostrará los valores de la celda A2 a A10. A continuación se ofrece un ejemplo de código de toda la discusión anterior.

/**
Load and Edit Values
anchor-data-from-specific-column
**/
Imports IronXL
Sub Main()
    Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
    Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()
    For Each cell In ws("A2:A10")
        Console.WriteLine("value is: {0}", cell.Text)
    Next
    Console.ReadKey() 
End Sub
/**
Load and Edit Values
anchor-data-from-specific-column
**/
Imports IronXL
Sub Main()
    Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
    Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()
    For Each cell In ws("A2:A10")
        Console.WriteLine("value is: {0}", cell.Text)
    Next
    Console.ReadKey() 
End Sub
VB.NET

Esto mostrará la siguiente salida:

Doc3 Input1 related to 5.1. Datos de la columna específica

Y podemos ver una captura de pantalla del fichero Excel Sample.xlsx:

Doc3 1 related to 5.1. Datos de la columna específica

6. Realizar funciones sobre los datos

Es sencillo acceder a datos filtrados desde una hoja de cálculo de Excel aplicando funciones de agregación como Suma, Mín o Máx de la siguiente manera:

Dim sum As Decimal = ws("From:To").Sum()
Dim min As Decimal = ws("From:To").Min()
Dim max As Decimal = ws("From:To").Max()
Dim sum As Decimal = ws("From:To").Sum()
Dim min As Decimal = ws("From:To").Min()
Dim max As Decimal = ws("From:To").Max()
VB.NET

Más informaciónFunciones Agregadas de Excel aquí.

/**
Apply Functions to Data
anchor-perform-functions-on-data
**/
Imports IronXL
Sub Main()
    Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
    Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()

    Dim sum As Decimal = ws("G2:G10").Sum()
    Dim min As Decimal = ws("G2:G10").Min()
    Dim max As Decimal = ws("G2:G10").Max()

    Console.WriteLine("Sum is: {0}", sum)
    Console.WriteLine("Min is: {0}", min)
    Console.WriteLine("Max is: {0}", max)
    Console.ReadKey()
End Sub
/**
Apply Functions to Data
anchor-perform-functions-on-data
**/
Imports IronXL
Sub Main()
    Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
    Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()

    Dim sum As Decimal = ws("G2:G10").Sum()
    Dim min As Decimal = ws("G2:G10").Min()
    Dim max As Decimal = ws("G2:G10").Max()

    Console.WriteLine("Sum is: {0}", sum)
    Console.WriteLine("Min is: {0}", min)
    Console.WriteLine("Max is: {0}", max)
    Console.ReadKey()
End Sub
VB.NET

Este código nos dará esta pantalla:

Doc3 Output2 related to 6. Realizar funciones sobre los datos

Y este archivo Excel Muestra.xlsx:

Doc3 2 related to 6. Realizar funciones sobre los datos

Puede obtener más información sobre cómoleer Excel en el artículo enlazado.


Acceso rápido a tutoriales

Documentación Referencia API

Acceda a la referencia API de documentación de IronXL y a las formas sencillas de trabajar con Excel en su proyecto VB.NET. Encuentre listas de características, funciones, clases y mucho más.

Documentación Referencia API
Documentation related to Acceso rápido a tutoriales