Saltar al pie de página
USANDO IRONXL

VB.NET Lectura de Archivos de Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office

La lectura de archivos Excel en aplicaciones VB.NET es un requisito común para el software empresarial, las herramientas de procesamiento de datos y los sistemas de generación de informes. Los enfoques tradicionales que utilizan Microsoft Office Interop requieren que la aplicación Excel se instale en cada escritorio o servidor Windows, lo que crea dependencias complejas que causan dolores de cabeza en la implementación. Este tutorial muestra cómo leer datos de archivos Excel en VB.NET utilizando IronXL, una moderna biblioteca .NET que procesa los formatos de archivo XLSX y XLS sin necesidad de instalar Office.

VB.NET (a menudo denominado VB en las comunidades de desarrolladores) ofrece múltiples opciones para leer archivos Excel. Los desarrolladores de VB.NET pueden elegir entre utilizar Microsoft Office Interop o bibliotecas de terceros para acceder a las hojas de cálculo de Excel y manipularlas. Existen varias bibliotecas disponibles para leer archivos Excel en VB.NET, incluidas las herramientas propias de Microsoft y soluciones de terceros. Muchas de estas bibliotecas, como IronXL, pueden instalarse fácilmente a través del gestor de paquetes NuGet, lo que agiliza el proceso de configuración de los proyectos VB.NET.

Al documentar o explicar los flujos de trabajo de Excel, los desarrolladores suelen incluir una imagen, como una vista previa de la hoja de cálculo, el diseño de la hoja de cálculo o una comparación entre el código y el resultado, para demostrar visualmente cómo se estructuran y procesan los datos de Excel. El uso de una biblioteca como IronXL garantiza que los datos mostrados en una imagen de Excel coincidan exactamente con lo que su aplicación VB.NET lee mediante programación, lo que mejora la claridad de la documentación técnica y los tutoriales.


¿Cómo instalo IronXL para el procesamiento de Excel VB.NET?

Instale IronXL a través de la consola del gestor de paquetes NuGet en Visual Studio. Abra su proyecto VB.NET y ejecútelo:

Install-Package IronXL.Excel

VB.NET Lectura de Archivos Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office: Imagen 1 - Instalación

Tras la instalación, añada la importación del espacio de nombres en la parte superior de su archivo de código VB.NET:

Imports IronXL
Imports System
Imports IronXL
Imports System
VB .NET

Sigue estas sencillas instrucciones y estarás listo. Sin referencias COM, sin Office Primary Interop Assemblies y sin dependencias específicas de versión que gestionar. Su proyecto está listo para crear, leer, escribir y manipular archivos Excel.


Comprensión de los formatos de archivo de Excel

Cuando se trabaja con archivos de Excel en VB.NET, la comprensión de los diferentes formatos de archivo de Excel es esencial para la construcción de aplicaciones robustas que pueden leer, escribir y manipular datos de hojas de cálculo con eficacia. Los formatos más habituales son XLS, XLSX y XLSB. Cada formato tiene características únicas que afectan a la forma de acceder y procesar los datos de Excel en sus proyectos .NET.

XLS es el formato de archivo heredado de Excel, utilizado por Excel 2003 y versiones anteriores. Los datos se almacenan en una estructura binaria, lo que puede dificultar su manipulación directa sin bibliotecas especializadas. XLSX, introducido con Excel 2007, es ahora el formato predeterminado para la mayoría de los libros de Excel modernos. Los archivos XLSX son en realidad archivos ZIP que contienen archivos XML, lo que los hace más accesibles para la manipulación programática y más adecuados para aplicaciones multiplataforma. XLSB es un formato binario diseñado para archivos Excel de gran tamaño, que ofrece operaciones de lectura y escritura más rápidas para conjuntos de datos masivos.

Cuando crees archivos Excel en VB.NET, es importante que elijas el formato adecuado para tus necesidades. Bibliotecas como IronXL facilitan la generación de nuevos libros de trabajo en formatos XLS, XLSX, CSV o TSV, en función de sus necesidades. Por ejemplo, si necesitas compartir datos con usuarios de diferentes plataformas o integrarlos con otros sistemas, XLSX o CSV pueden ser la mejor opción. Si trabajas con sistemas heredados, puede que necesites el antiguo formato de archivo XLS.

La diferencia entre estos formatos también afecta a la forma de leer y escribir archivos Excel. Por ejemplo, los archivos XLSX, al estar basados en XML, son más fáciles de analizar y manipular, mientras que los archivos XLS requieren el manejo de datos binarios. Con IronXL, puede utilizar el método WorkBook.Load para leer archivos de Excel independientemente de su formato; simplemente proporcione la ruta del archivo y la biblioteca detectará el formato automáticamente. Una vez cargado, puede acceder al libro de Excel, recorrer cada hoja de Excel y recuperar o actualizar los valores de las celdas mediante la propiedad Value o la colección Cells. La manipulación de archivos de Excel en VB.NET a menudo implica trabajar con diferentes tipos de datos, como números, texto y fechas. El método FormatValue permite mostrar los datos de Excel en el formato deseado, garantizando que la aplicación presente la información con claridad.

¿Cómo cargar y leer un archivo Excel?

El método WorkBook.Load abre cualquier archivo de Excel y devuelve un objeto workbook que contiene todas las hojas de trabajo y los datos de Excel. IronXL detecta automáticamente el formato del archivo y es compatible con los formatos de hoja de cálculo XLSX, XLS, XLSM, CSV y TSV.

Imports IronXL
Imports System

Module Program
    Sub Main()
        ' Load the Excel workbook from file path
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        ' Access the first worksheet in the workbook
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Read a single cell value using the Value property
        Dim companyName As String = sheet("A1").StringValue
        Console.WriteLine("Company: " & companyName)
    End Sub
End Module
Imports IronXL
Imports System

Module Program
    Sub Main()
        ' Load the Excel workbook from file path
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        ' Access the first worksheet in the workbook
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Read a single cell value using the Value property
        Dim companyName As String = sheet("A1").StringValue
        Console.WriteLine("Company: " & companyName)
    End Sub
End Module
VB .NET

El método WorkBook.Load acepta una cadena de ruta de archivo y devuelve un objeto WorkBook que proporciona acceso completo al contenido de la hoja de cálculo. La propiedad DefaultWorkSheet recupera la primera hoja, mientras que la propiedad StringValue extrae el contenido de la celda como texto. También puede acceder a las hojas de trabajo por nombre con workbook.GetWorkSheet("Sheet1") o por índice con workbook.WorkSheets(0) para recuperar cualquier hoja del nuevo libro de trabajo.

Entrada

VB.NET Lectura de Archivos Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office: Imagen 2 - Ejemplo de entrada de Excel

Resultado

VB.NET Lectura de Archivos Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office: Imagen 3 - Salida de la Consola

Para archivos Excel protegidos por contraseña, pase la contraseña como segundo parámetro: WorkBook.Load("Protected.xlsx", "myPassword"). Este método funciona con cualquier nombre de archivo que especifique.

¿Cómo leer diferentes tipos de datos de las celdas?

Las celdas de Excel contienen varios tipos de datos, como texto, números, fechas y fórmulas. IronXL proporciona propiedades tipográficas para extraer valores de celda en el formato correcto sin necesidad de conversión manual. Cada objeto de celda expone una propiedad de valor para diferentes tipos de datos.

Imports IronXL
Imports System

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Read different data types from row 2 cells
        Dim employeeId As Integer = sheet("A2").IntValue
        Dim employeeName As String = sheet("B2").StringValue
        Dim salary As Decimal = sheet("D2").DecimalValue
        Dim hireDate As DateTime = sheet("E2").DateTimeValue
        ' Display the extracted Excel data
        Console.WriteLine("ID: " & employeeId.ToString())
        Console.WriteLine("Name: " & employeeName)
        Console.WriteLine("Salary: $" & salary.ToString("N2"))
        Console.WriteLine("Hired: " & hireDate.ToShortDateString())
    End Sub
End Module
Imports IronXL
Imports System

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Read different data types from row 2 cells
        Dim employeeId As Integer = sheet("A2").IntValue
        Dim employeeName As String = sheet("B2").StringValue
        Dim salary As Decimal = sheet("D2").DecimalValue
        Dim hireDate As DateTime = sheet("E2").DateTimeValue
        ' Display the extracted Excel data
        Console.WriteLine("ID: " & employeeId.ToString())
        Console.WriteLine("Name: " & employeeName)
        Console.WriteLine("Salary: $" & salary.ToString("N2"))
        Console.WriteLine("Hired: " & hireDate.ToShortDateString())
    End Sub
End Module
VB .NET

Cada propiedad tipificada (IntValue, StringValue, DecimalValue, DateTimeValue) gestiona la conversión automáticamente a partir del valor de celda subyacente. La propiedad Text devuelve el valor de visualización exactamente como se muestra en la aplicación Excel, mientras que la propiedad genérica Value devuelve el objeto de datos sin procesar. Para las celdas que contienen fórmulas de Excel, IronXL calcula el resultado y devuelve el valor calculado, por lo que puede recuperar los resultados de la fórmula sin código adicional.

¿Cómo recorro las filas de Excel?

El procesamiento de múltiples registros requiere iterar a través de filas y columnas de hojas de cálculo de Excel. La sintaxis de rango de IronXL hace que esto sea sencillo con la estructura de bucle For Each de VB.NET. Puede escribir código para procesar cualquier número de filas en una sola pasada.

Imports IronXL
Imports System

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Loop through cells in column B to retrieve employee names
        Console.WriteLine("Employee List:")
        For Each cell In sheet("B2:B10")
            If Not String.IsNullOrEmpty(cell.Text) Then
                Console.WriteLine(" - " & cell.Text)
            End If
        Next
    End Sub
End Module
Imports IronXL
Imports System

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Loop through cells in column B to retrieve employee names
        Console.WriteLine("Employee List:")
        For Each cell In sheet("B2:B10")
            If Not String.IsNullOrEmpty(cell.Text) Then
                Console.WriteLine(" - " & cell.Text)
            End If
        Next
    End Sub
End Module
VB .NET

La sintaxis de rango sheet("B2:B10") selecciona las celdas de B2 a B10, devolviendo una colección enumerable que se puede recorrer en bucle. La comprobación String.IsNullOrEmpty maneja las celdas vacías con elegancia, evitando líneas en blanco en la salida de la consola. Para procesar filas enteras con varias columnas, utilice bucles anidados o acceda a las celdas combinando el índice de fila con las letras de columna. También puede utilizar el recuento de filas para determinar cuándo detener el bucle.

Resultado

VB.NET Lectura de Archivos Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office: Imagen 4 - Salida de filas de Excel

La propiedad Rows le permite iterar fila por fila a través de todo el rango de datos de la hoja de trabajo, dándole acceso a cada fila como una matriz de valores de celda.

¿Cómo realizar cálculos con datos de Excel?

IronXL incluye funciones agregadas integradas para realizar cálculos comunes sin necesidad de escribir bucles manuales. Estas funciones trabajan directamente sobre rangos de celdas y se integran con LINQ para realizar consultas avanzadas. La API facilita la recuperación de datos estadísticos de cualquier hoja de cálculo.

Imports IronXL
Imports System

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Calculate salary statistics from column D range
        Dim totalSalaries As Decimal = sheet("D2:D50").Sum()
        Dim highestSalary As Decimal = sheet("D2:D50").Max()
        Dim lowestSalary As Decimal = sheet("D2:D50").Min()
        ' Display the calculated results
        Console.WriteLine("Total Payroll: $" & totalSalaries.ToString("N2"))
        Console.WriteLine("Highest Salary: $" & highestSalary.ToString("N2"))
        Console.WriteLine("Lowest Salary: $" & lowestSalary.ToString("N2"))
    End Sub
End Module
Imports IronXL
Imports System

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet
        ' Calculate salary statistics from column D range
        Dim totalSalaries As Decimal = sheet("D2:D50").Sum()
        Dim highestSalary As Decimal = sheet("D2:D50").Max()
        Dim lowestSalary As Decimal = sheet("D2:D50").Min()
        ' Display the calculated results
        Console.WriteLine("Total Payroll: $" & totalSalaries.ToString("N2"))
        Console.WriteLine("Highest Salary: $" & highestSalary.ToString("N2"))
        Console.WriteLine("Lowest Salary: $" & lowestSalary.ToString("N2"))
    End Sub
End Module
VB .NET

Las funciones agregate (Sum, Min, Max, Average) calculan resultados en el rango de celdas especificado. Estos métodos omiten automáticamente las celdas vacías y gestionan la conversión numérica, haciendo que los cálculos de nóminas, los totales de inventario y los análisis estadísticos sean sencillos de implementar en su aplicación.

¿Cómo construir un lector completo de datos de empleados?

He aquí un ejemplo de aplicación práctica que carga una hoja de cálculo de empleados, procesa cada registro en un bucle y muestra una salida formateada con un tratamiento adecuado de los errores. Este código demuestra cómo crear un sistema completo de extracción de datos.

Imports IronXL
Imports System

Module EmployeeDataReader
    Sub Main()
        Try
            ' Load the employee Excel workbook from path
            Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
            Dim sheet As WorkSheet = workbook.DefaultWorkSheet
            Console.WriteLine("=== Employee Data Report ===")
            Console.WriteLine()
            ' Process each employee row (skip header in first row)
            Dim rowNumber As Integer = 2
            Dim totalSalary As Decimal = 0
            Dim employeeCount As Integer = 0
            Do While Not String.IsNullOrEmpty(sheet("A" & rowNumber.ToString()).StringValue)
                ' Retrieve data from each column in the row
                Dim id As Integer = sheet("A" & rowNumber.ToString()).IntValue
                Dim name As String = sheet("B" & rowNumber.ToString()).StringValue
                Dim department As String = sheet("C" & rowNumber.ToString()).StringValue
                Dim salary As Decimal = sheet("D" & rowNumber.ToString()).DecimalValue
                ' Display formatted employee record
                Console.WriteLine("ID: " & id.ToString() & " " & name & " " & department & " $" & salary.ToString("N2"))
                totalSalary += salary
                employeeCount += 1
                rowNumber += 1
            Loop
            Console.WriteLine()
            Console.WriteLine("Total Employees: " & employeeCount.ToString())
            Console.WriteLine("Total Payroll: $" & totalSalary.ToString("N2"))
        Catch ex As Exception
            Console.WriteLine("Error reading Excel file: " & ex.Message)
        End Try
    End Sub
End Module
Imports IronXL
Imports System

Module EmployeeDataReader
    Sub Main()
        Try
            ' Load the employee Excel workbook from path
            Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
            Dim sheet As WorkSheet = workbook.DefaultWorkSheet
            Console.WriteLine("=== Employee Data Report ===")
            Console.WriteLine()
            ' Process each employee row (skip header in first row)
            Dim rowNumber As Integer = 2
            Dim totalSalary As Decimal = 0
            Dim employeeCount As Integer = 0
            Do While Not String.IsNullOrEmpty(sheet("A" & rowNumber.ToString()).StringValue)
                ' Retrieve data from each column in the row
                Dim id As Integer = sheet("A" & rowNumber.ToString()).IntValue
                Dim name As String = sheet("B" & rowNumber.ToString()).StringValue
                Dim department As String = sheet("C" & rowNumber.ToString()).StringValue
                Dim salary As Decimal = sheet("D" & rowNumber.ToString()).DecimalValue
                ' Display formatted employee record
                Console.WriteLine("ID: " & id.ToString() & " " & name & " " & department & " $" & salary.ToString("N2"))
                totalSalary += salary
                employeeCount += 1
                rowNumber += 1
            Loop
            Console.WriteLine()
            Console.WriteLine("Total Employees: " & employeeCount.ToString())
            Console.WriteLine("Total Payroll: $" & totalSalary.ToString("N2"))
        Catch ex As Exception
            Console.WriteLine("Error reading Excel file: " & ex.Message)
        End Try
    End Sub
End Module
VB .NET

Este ejemplo muestra un flujo de trabajo completo de extracción de datos. El bucle Do While continúa hasta que encuentra una celda vacía en la columna A, lo que lo hace flexible para hojas de cálculo con distintos recuentos de filas, sin necesidad de conocer el recuento exacto de antemano. Cada iteración extrae la información de los empleados de varias columnas y acumula el total salarial. El bloque Try-Catch se ocupa de problemas comunes como archivos que faltan o datos dañados, evitando que la aplicación se bloquee.

Resultado

VB.NET Lectura de Archivos Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office: Imagen 5 - Salida de Datos de Empleados

También puede insertar datos mediante programación en celdas de hojas de cálculo en VB.NET. Por ejemplo, para añadir un nuevo registro de empleado, podría utilizar:

sheet("A10").Value = 1010 ' ID inserted
sheet("B10").Value = "Jane Doe" ' Name inserted
sheet("C10").Value = "Finance" ' Department inserted
sheet("D10").Value = 75000 ' Salary inserted
workbook.Save()
sheet("A10").Value = 1010 ' ID inserted
sheet("B10").Value = "Jane Doe" ' Name inserted
sheet("C10").Value = "Finance" ' Department inserted
sheet("D10").Value = 75000 ' Salary inserted
workbook.Save()
VB .NET

Esto demuestra cómo se pueden insertar nuevos datos en celdas específicas utilizando código VB.NET.

Para los archivos CSV, utilice WorkBook.LoadCSV("data.csv") en lugar del método estándar Load para optimizar el análisis del formato separado por comas. Los datos de Excel extraídos se integran fácilmente con bases de datos, informes u otra lógica empresarial en su aplicación VB.NET. También puede rellenar una DataTable o matriz con los valores recuperados para su posterior procesamiento.

Integración con Windows Forms: El mismo código funciona en una aplicación Windows Form. Cree un formulario con dos botones -uno para cargar el archivo y otro para mostrar los datos- y gestione los eventos de clic:

Imports IronXL
Imports System.Windows.Forms

Public Class Form1
    Private workbook As WorkBook

    Private Sub btnLoad_Click(ByVal sender As Object, ByVal e As EventArgs)
        workbook = WorkBook.Load("Employees.xlsx")
        MessageBox.Show("Excel file loaded successfully!")
    End Sub

    Private Sub btnDisplay_Click(ByVal sender As Object, ByVal e As EventArgs)
        If workbook IsNot Nothing Then
            Dim sheet As WorkSheet = workbook.DefaultWorkSheet
            Dim name As String = sheet("B2").StringValue
            MessageBox.Show("First Employee: " & name)
        End If
    End Sub
End Class
Imports IronXL
Imports System.Windows.Forms

Public Class Form1
    Private workbook As WorkBook

    Private Sub btnLoad_Click(ByVal sender As Object, ByVal e As EventArgs)
        workbook = WorkBook.Load("Employees.xlsx")
        MessageBox.Show("Excel file loaded successfully!")
    End Sub

    Private Sub btnDisplay_Click(ByVal sender As Object, ByVal e As EventArgs)
        If workbook IsNot Nothing Then
            Dim sheet As WorkSheet = workbook.DefaultWorkSheet
            Dim name As String = sheet("B2").StringValue
            MessageBox.Show("First Employee: " & name)
        End If
    End Sub
End Class
VB .NET

Este ejemplo muestra cómo los controladores de eventos Private Sub con los parámetros ByVal sender As Object y ByVal e As EventArgs integran IronXL en un formulario de escritorio. La estructura de clases con End Class sigue los patrones estándar de VB.NET.

Resultado

VB.NET Lectura de Archivos Excel Usando IronXL: Una Guía Paso a Paso Sin Microsoft Office: Imagen 6 - Windows Form Output

Conclusión

IronXL transforma la lectura de archivos Excel de VB.NET de un complejo desafío de Interop a un código sencillo. Cargar libros de trabajo, extraer valores de celdas, recorrer filas y columnas y realizar cálculos requieren unas pocas líneas de sintaxis intuitiva, sin necesidad de instalar Microsoft Office en el escritorio o servidor de Windows. El mismo código funciona tanto si está creando una aplicación de consola, un formulario de Windows con botones o una página web ASPX.

Comience con una prueba gratuita para implementar el procesamiento de datos de Excel en sus proyectos VB.NET hoy mismo. Descarga IronXL y explora la documentación completa para funciones avanzadas como crear archivos de Excel, exportar a múltiples formatos, y estilización de celdas. La API de IronXL (https://ironsoftware.com/csharp/excel/object-reference/api/) proporciona un sistema completo para cualquier tarea de manipulación de Excel, ya sea que necesite leer, escribir, crear o manipular datos de hojas de cálculo en su aplicación .NET.

Preguntas Frecuentes

¿Qué es IronXL?

IronXL es una biblioteca .NET que permite a los desarrolladores leer, editar y crear archivos de Excel en varios formatos, como XLSX y XLS, sin necesidad de tener instalado Microsoft Office.

¿Cómo se puede utilizar IronXL para leer archivos de Excel en VB.NET?

IronXL se puede utilizar en VB.NET para leer archivos de Excel cargando el archivo en un objeto WorkBook, lo que le permite acceder a los datos de WorkSheets dentro del WorkBook.

¿Por qué elegir IronXL en lugar de Microsoft Office Interop para leer archivos de Excel?

IronXL ofrece un proceso de despliegue más sencillo, ya que no requiere la instalación de Microsoft Office, lo que elimina dependencias complejas y reduce los dolores de cabeza del despliegue.

¿Qué tipos de formatos de archivo de Excel puede procesar IronXL?

IronXL puede procesar varios formatos de archivo de Excel, incluidos XLSX y XLS, lo que lo hace versátil para diferentes necesidades de manejo de datos.

¿Puede IronXL manejar grandes archivos de Excel de manera eficiente?

Sí, IronXL está optimizado para el rendimiento y puede manejar grandes archivos de Excel de manera eficiente, por lo que es adecuado para aplicaciones que requieren el procesamiento de cantidades sustanciales de datos.

¿Es IronXL compatible con otros lenguajes .NET además de VB.NET?

Sí, IronXL es compatible con otros lenguajes .NET como C# y F#, lo que proporciona flexibilidad a los desarrolladores que trabajan en distintos entornos.

¿Es IronXL compatible con la lectura de archivos de Excel sin Microsoft Office instalado?

Sí, una de las características clave de IronXL es que puede leer archivos de Excel sin necesidad de Microsoft Office, lo que simplifica la implementación y reduce los requisitos del sistema.

¿Cuáles son las ventajas de utilizar IronXL para el software empresarial?

IronXL proporciona métodos fáciles de usar para leer y manipular datos de Excel, por lo que es ideal para el software empresarial que requiere análisis de datos, informes o integración con hojas de cálculo de Excel.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más