Saltar al pie de página
USANDO IRONXL
Cómo convertir una tabla de datos a un archivo de Excel

DataTable a Excel en C# (Tutorial con ejemplo de código)

Puede ser difícil modificar programáticamente una hoja de cálculo de Excel, por dos razones principales. Primero, al tratar con hojas de cálculo, los usuarios deben mantener una interfaz consistente y una estructura de documento, lo cual no siempre es sencillo. En segundo lugar, no siempre está claro qué código funcionará en situaciones específicas, especialmente cuando se involucran cálculos sofisticados. Hay numerosas razones por las que crear un archivo de Excel programáticamente es difícil. Los programadores primero deben transformar los datos en el documento de Excel en un formato legible, luego analizar los datos y volver a analizarlos, lo que es aún más difícil. He encontrado una solución a este problema. Te enseñaré cómo hacer un archivo de Excel y exportar programáticamente un DataTable a una hoja de Excel sin ningún problema utilizando la biblioteca IronXL .NET Excel. Empecemos:

Características de IronXL

  • IronXL se ejecuta en una variedad de sistemas operativos, incluidos Windows, Linux y macOS.
  • Casi todos los marcos de trabajo .NET son compatibles con IronXL, incluidas las aplicaciones de consola, Windows Forms y Web Application.
  • IronXL hace que la lectura de archivos de Excel sea simple y fácil.
  • Podemos cargar, editar, exportar Datatables, exportar conjuntos de datos, y leer formatos de archivo de Excel como archivos XLSX, XLS, CSV, TSV, XLST, XLSM, y más con IronXL.
  • IronXL nos permite guardar y exportar archivos con una variedad de extensiones, incluidas XLS, CSV, TSV, JSON, XLSX, y otros.
  • Las fórmulas de Excel pueden ser creadas por IronXL.
  • Textos, Números, Fórmulas, Fechas, Divisas, Porcentajes, y otros formatos de datos de celdas de Excel son compatibles con IronXL.
  • También proporciona numerosas opciones de clasificación como Rango, Columnas y Filas, entre otros.
  • El estilo de las celdas en IronXL incluye fuente, tamaño, patrón de fondo, borde y alineación, entre otros.
  • Podemos leer y exportar datos de un archivo de Excel utilizando IronXL.
  • IronXL no requiere que Excel o Interop estén instalados en su servidor. La API de IronXL es más rápida y más fácil de usar que Microsoft Office, Interop y Excel.

1 Creación de un nuevo proyecto en Visual Studio

Para usar la biblioteca IronXL, debemos crear un proyecto .NET en Visual Studio. Puede usar cualquier versión de Visual Studio, pero se recomienda la última versión. Puede crear una aplicación como Windows Forms o diferentes plantillas de proyecto, dependiendo de sus necesidades. Utilizaré la aplicación de consola para este tutorial, por simplicidad.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 1: Crear una nueva interfaz de usuario de proyecto en Visual Studio Crear una nueva interfaz de usuario de proyecto en Visual Studio

A continuación, ingrese el nombre del proyecto y la ubicación del proyecto.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 2: Paso de configuración al crear un nuevo proyecto Paso de configuración al crear un nuevo proyecto

A continuación, seleccione el marco a continuación. En este proyecto, vamos a usar .NET Core 6.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 3: Interfaz de usuario de selección de .Net Framework Interfaz de selección de .Net Framework

Una vez que la aplicación cree la solución, abrirá el archivo program.cs donde puede ingresar el código y construir/ejecutar la aplicación.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 4: Archivo program.cs vacío en el nuevo proyecto Archivo program.cs vacío en el nuevo proyecto

A continuación, podemos añadir la biblioteca para probar el código.

2 Instalar la biblioteca IronXL

La Biblioteca IronXL se puede descargar e instalar de cuatro maneras.

Estas son:

  • Usando Visual Studio
  • Usando la línea de comandos de Visual Studio.
  • Descarga directa desde el sitio web de NuGet.
  • Descarga directa desde el sitio web de IronXL.

2.1 Uso de Visual Studio

Podemos instalar la biblioteca IronXL usando el Administrador de Paquetes NuGet. Primero debe abrir el Administrador de Paquetes NuGet y luego buscar IronXL en la pestaña de exploración. Seleccione IronXL de los resultados de búsqueda e instálelo. Después de eso, nuestro proyecto estará listo para usar en la biblioteca IronXL.

La captura de pantalla a continuación muestra cómo podemos abrir el Administrador de Paquetes NuGet en Visual Studio.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 5: Navegar al Administrador de Paquetes NuGet en Visual Studio Navegar al Administrador de Paquetes NuGet en Visual Studio

IronXL en los resultados de búsqueda:

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 6: Buscar la biblioteca IronXL Buscar la biblioteca IronXL

2.2 Uso de la línea de comandos de Visual Studio

A mucha gente le gusta usar una Consola para realizar operaciones. Por lo tanto, también podemos instalarlo por Consola. Siga los pasos a continuación para instalar IronXL desde la línea de comandos.

  • En Visual Studio, vaya a Herramientas -> Administrador de Paquetes NuGet -> Consola del Administrador de Paquetes.
  • Ingrese la siguiente línea en la pestaña de la Consola del Administrador de Paquetes:
Install-Package IronXL.Excel

Ahora el paquete se descargará/instalará en el proyecto actual y estará listo para usar.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 7: Instalar paquete IronXL a través de la Consola Instalar paquete IronXL a través de la Consola

2.3 Descarga directa desde el sitio web de NuGet

La tercera forma es descargar el paquete NuGet directamente desde el sitio web.

  • Navegue a la página oficial del paquete IronXL de NuGet.
  • Selecciona la opción de descarga del paquete en el menú de la derecha.
  • Haz doble clic en el paquete descargado. Se instalará automáticamente.
  • Luego, vuelve a cargar la solución y comienza a usarlo en el proyecto.

2.4 Descarga directa desde el sitio web de IronXL

Haga clic en el enlace para descargar el último paquete directamente desde el sitio web. Una vez descargado, siga los pasos a continuación para agregar el paquete al proyecto.

  • Haz clic derecho en el proyecto desde la ventana de la solución.
  • Luego, seleccione las opciones de referencia y busque la ubicación de la referencia descargada.
  • Luego, haga clic en ok para agregar la referencia.

3 Exportar tabla de datos a archivo Excel usando IronXL

IronXL nos permite exportar DataTables a archivos Excel fácilmente con un número limitado de pasos.

Primero, debemos incluir el espacio de nombres de IronXL como en la captura de pantalla del código a continuación. Una vez agregado, podemos utilizar las clases y métodos de IronXL en nuestro código.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 8: Incluir el espacio de nombres de IronXL antes de usar la biblioteca Incluir namespace de IronXL antes de usar la biblioteca

IronXL nos permite crear archivos de Excel y convertirlos en objetos de libro de trabajo. Después de convertirlos en objetos, podemos realizar varios tipos de operaciones. En el código de ejemplo a continuación, convertiremos un DataTable en una hoja de trabajo de Excel, y luego podremos crear un archivo de Excel.

using System;
using System.Data;
using IronXL;

public class ExcelExporter
{
    /// <summary>
    /// Exports a DataTable to an Excel file using IronXL.
    /// </summary>
    /// <param name="filePath">The file path where the Excel file will be saved.</param>
    public static void ExportToExcel(string filePath)
    {
        // Creating a DataTable with a single column
        DataTable table = new DataTable();
        table.Columns.Add("DataSet_Animal", typeof(string));

        // Adding some rows to the DataTable
        table.Rows.Add("Lion");
        table.Rows.Add("Tiger");
        table.Rows.Add("Cat");
        table.Rows.Add("Goat");
        table.Rows.Add("Panther");
        table.Rows.Add("Fox");
        table.Rows.Add("Cheetah");

        // Creating a new Excel Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);

        // Accessing the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;

        // Iterating through the DataTable rows
        int rowCount = 1;
        foreach (DataRow row in table.Rows)
        {
            // Adding each DataRow's first column value to the corresponding cell in the worksheet
            ws["A" + rowCount].Value = row[0].ToString();
            rowCount++;
        }

        // Saving the workbook to a CSV file at specified file path with ";" as delimiter
        wb.SaveAsCsv(filePath, ";");
    }
}
using System;
using System.Data;
using IronXL;

public class ExcelExporter
{
    /// <summary>
    /// Exports a DataTable to an Excel file using IronXL.
    /// </summary>
    /// <param name="filePath">The file path where the Excel file will be saved.</param>
    public static void ExportToExcel(string filePath)
    {
        // Creating a DataTable with a single column
        DataTable table = new DataTable();
        table.Columns.Add("DataSet_Animal", typeof(string));

        // Adding some rows to the DataTable
        table.Rows.Add("Lion");
        table.Rows.Add("Tiger");
        table.Rows.Add("Cat");
        table.Rows.Add("Goat");
        table.Rows.Add("Panther");
        table.Rows.Add("Fox");
        table.Rows.Add("Cheetah");

        // Creating a new Excel Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);

        // Accessing the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;

        // Iterating through the DataTable rows
        int rowCount = 1;
        foreach (DataRow row in table.Rows)
        {
            // Adding each DataRow's first column value to the corresponding cell in the worksheet
            ws["A" + rowCount].Value = row[0].ToString();
            rowCount++;
        }

        // Saving the workbook to a CSV file at specified file path with ";" as delimiter
        wb.SaveAsCsv(filePath, ";");
    }
}
Imports System
Imports System.Data
Imports IronXL

Public Class ExcelExporter
	''' <summary>
	''' Exports a DataTable to an Excel file using IronXL.
	''' </summary>
	''' <param name="filePath">The file path where the Excel file will be saved.</param>
	Public Shared Sub ExportToExcel(ByVal filePath As String)
		' Creating a DataTable with a single column
		Dim table As New DataTable()
		table.Columns.Add("DataSet_Animal", GetType(String))

		' Adding some rows to the DataTable
		table.Rows.Add("Lion")
		table.Rows.Add("Tiger")
		table.Rows.Add("Cat")
		table.Rows.Add("Goat")
		table.Rows.Add("Panther")
		table.Rows.Add("Fox")
		table.Rows.Add("Cheetah")

		' Creating a new Excel Workbook
		Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)

		' Accessing the default worksheet
		Dim ws As WorkSheet = wb.DefaultWorkSheet

		' Iterating through the DataTable rows
		Dim rowCount As Integer = 1
		For Each row As DataRow In table.Rows
			' Adding each DataRow's first column value to the corresponding cell in the worksheet
			ws("A" & rowCount).Value = row(0).ToString()
			rowCount += 1
		Next row

		' Saving the workbook to a CSV file at specified file path with ";" as delimiter
		wb.SaveAsCsv(filePath, ";")
	End Sub
End Class
$vbLabelText   $csharpLabel

En el código anterior, estamos exportando el DataTable a un archivo de Excel. Primero, estamos creando un DataTable, y luego estamos creando encabezados de columnas. Después de crear las columnas, añadimos las filas una por una. Una vez que se añaden las filas, creamos el objeto de WorkBook. Usando el objeto, podemos añadir los datos a la hoja de Excel, y luego podemos guardar los datos en la ubicación. Estamos creando el objeto de WorkSheet que permite crear una hoja de trabajo, y luego podemos añadir esto al objeto WorkBook.

Estamos usando un bucle foreach para leer los valores de DataTable uno por uno y luego añadimos el valor a la hoja de trabajo. Una vez que todos los valores se añaden a la hoja de trabajo, luego los guardamos en un archivo CSV usando el método llamado SaveAsCsv — necesitamos pasar el delimitador y el nombre del archivo con la ubicación como parámetro. Un delimitador es un parámetro opcional que podemos ignorar si no es necesario.

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 9: El código completo en Visual Studio El código completo en Visual Studio

Arriba está la captura de pantalla completa del código que estamos usando en .NET Core 6.

Result:

Cómo Exportar Gran Cantidad de Datos Desde Datatable a Excel en C#, Figura 10: El resultado al abrir el archivo en Microsoft Excel El resultado al abrir el archivo en Microsoft Excel

Arriba está el resultado del ejemplo de código ejecutado. En la captura de pantalla, todos los datos disponibles en el DataTable se han agregado a la hoja de Excel recién creada uno por uno.

4 Conclusión

IronXL es una de las bibliotecas de Excel más comúnmente usadas. No depende de ninguna otra biblioteca de terceros. Es independiente y no necesita que MS Excel esté instalado. Funciona en múltiples plataformas. El precio de introducción para IronXL comienza en $799. Además, proporciona la opción de una tarifa anual por soporte y actualizaciones del producto. IronXL proporciona cobertura de redistribución libre de regalías a un costo adicional. Para conocer más sobre los detalles de precios, visite nuestra página de licencias.

Preguntas Frecuentes

¿Cómo puedo exportar un DataTable a un archivo Excel en C#?

Puedes usar las clases WorkBook y WorkSheet de IronXL para exportar un DataTable a un archivo Excel. Crea un DataTable, itera a través de sus filas y llena el archivo Excel con datos usando la API de IronXL.

¿Cuáles son los beneficios de usar IronXL sobre Interop para operaciones de Excel?

IronXL es más rápido y eficiente que Microsoft Interop, no requiere que Microsoft Excel esté instalado, y soporta múltiples plataformas y formatos de archivo.

¿Qué formatos de archivo soporta IronXL para archivos de Excel?

IronXL soporta varios formatos de archivo Excel, incluyendo XLSX, XLS, CSV, TSV, XLST y XLSM, permitiendo una manipulación versátil de archivos.

¿Puede IronXL manejar fórmulas de Excel al exportar datos?

Sí, IronXL puede manejar fórmulas de Excel, asegurando que los cálculos complejos se preserven al exportar datos de un DataTable a un archivo Excel.

¿Qué sistemas operativos son compatibles con IronXL?

IronXL es compatible con múltiples sistemas operativos, incluyendo Windows, Linux y macOS, permitiendo el desarrollo multiplataforma.

¿Es necesario tener instalado Microsoft Excel para usar IronXL?

No, IronXL funciona independientemente de Microsoft Excel, permitiéndote trabajar con archivos Excel sin necesidad de tener Excel instalado en tu servidor.

¿Cómo puedo instalar IronXL para usarlo en un proyecto C#?

Puedes instalar IronXL a través del Administrador de Paquetes NuGet en Visual Studio, usando la línea de comandos, o descargándolo directamente desde los sitios web de NuGet o IronXL.

¿Qué marcos de trabajo .NET son soportados por IronXL?

IronXL soporta una amplia gama de marcos de trabajo .NET, incluyendo Aplicaciones de Consola, Aplicaciones de Windows Forms y Aplicaciones Web, haciéndolo versátil para diferentes tipos de proyectos.

¿IronXL soporta el estilo y formato de celdas en archivos Excel?

Sí, IronXL ofrece una variedad de opciones de estilo y formato de celdas, como establecer estilos de fuente, colores y bordes, para mejorar la apariencia de los archivos Excel.

¿Cómo simplifica IronXL el proceso de creación de archivos Excel programáticamente?

IronXL simplifica el proceso al proporcionar una API fácil de usar para crear, modificar y exportar archivos Excel sin las complejidades de mantener interfaces y estructuras requeridas por otros métodos.

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