USO DE IRONXL

C# Manera más rápida de exportar DataTable a Excel

Chaknith Bin
Chaknith Bin
30 de marzo, 2023
Actualizado 26 de septiembre, 2024
Compartir:

Al trabajar con hojas de cálculo, la aplicación Microsoft Excel es una herramienta de hoja de cálculo popular diseñada para gestionar grandes conjuntos de datos en un formato tabular. Ofrece características potentes como cálculos complejos, visualización de datos a través de gráficos y diagramas, tablas dinámicas y soporte para automatización mediante Visual Basic para Aplicaciones (VBA). Sus herramientas robustas de análisis de datos y visualización han hecho de Excel una opción líder en diversas industrias. Con Excel, puedes crear, editar, ver y compartir archivos fácilmente, simplificando tus tareas de gestión de datos.

En C#, el objeto DataTable en la biblioteca ADO.NET representa datos tabulares dentro de un programa, de manera similar a una hoja de cálculo Excel. Organiza los datos en filas y columnas, lo que permite una manipulación y exportación sencilla. Al igual que Excel, DataTable admite opciones de filtrado, ordenamiento y formato, lo que lo convierte en una herramienta indispensable para gestionar rangos de datos en C#. Sin embargo, DataTable se crea en tiempo de ejecución y sus datos se pierden cuando se cierra la aplicación, a menos que se exporten a un formato más permanente, como un archivo Excel o un archivo CSV.

Hoy exploraremos cómo crear un DataTable en C# y exportar sus datos a un documento de Excel usando IronXL, una poderosa biblioteca de Excel para .NET.

IronXL: Una biblioteca de Excel para .NET

IronXL es una biblioteca de C# .NET, que simplifica el proceso de creación de archivos de Excel. Con IronXL, puedes crear nuevas hojas de cálculo, editar las existentes, trabajar con fórmulas de Excel, dar estilo a las celdas de tu hoja de cálculo y más. Su amplia gama de características hace que trabajar con archivos de Excel de manera programática sea muy fácil y, lo que es más importante, IronXL funciona sin Microsoft Office Interop. Esto significa que no hay necesidad de instalar Microsoft Office ni ninguna otra dependencia especial.

Con IronXL, puedes guardar o exportar datos en diferentes formatos como XLS y XLSX, datos CSV y TSV, JSON, XML y HTML, Binario y Matriz de Bytes. También cuenta con sólidas características de seguridad para libros de trabajo, como la adición de permisos y contraseñas, y permite editar los metadatos del libro de trabajo.

Pasos para exportar datos de una tabla de datos a un archivo Excel

Requisitos previos

Para usar IronXL en la exportación de datos de una datatable a un archivo de Excel en C#, necesitamos que los siguientes componentes estén instalados en la computadora local. Veámoslos uno por uno.

  1. Visual Studio - Visual Studio es el IDE para programación en C# y debe estar instalado. Puedes descargar e instalar la última versión desde el sitio web de Visual Studio.

    • Una vez que el IDE esté configurado, se debe crear una aplicación de consola/formulario de Windows que ayude a exportar la tabla de datos a Excel. Las siguientes capturas de pantalla muestran cómo crear un proyecto.

    ¡Crear un proyecto

    Ahora, elige tu tipo de proyecto. En nuestro ejemplo, crearemos una aplicación de consola.

    Aplicación de Consola

    Nombra tu proyecto y elige la ubicación donde se guardará.

    Nombrar proyecto

    Finalmente, elija su .NET Framework y haga clic en "Crear".

    .NET Framework

    Después de hacer clic en Crear en la última captura de pantalla, se crea el proyecto con el nombre "DemoApp".

  2. Biblioteca IronXL - La biblioteca IronXL debe descargarse e instalarse en el proyecto de Visual Studio. Hay múltiples formas de hacerlo.

    • Uso de Visual Studio - Proporciona el Administrador de paquetes NuGet para instalar IronXL. Puede acceder a él a través del menú Herramientas o del Explorador de soluciones. Las siguientes capturas de pantalla ayudan a instalar IronXL. Primero, navega a "Herramientas" en la barra superior, o haz clic derecho dentro del explorador de soluciones.

    Explorador de Soluciones

    Herramientas - Administrador de paquetes NuGet

    Ve a Administrar paquetes de NuGet para la solución y busca IronXL. Luego, solo tienes que presionar "Instalar" y la biblioteca IronXL se añadirá a tu proyecto.

    Explorar IronXL

    • Símbolo del sistema de desarrollo - Abra el símbolo del sistema de desarrollo desde el menú Herramientas de Visual Studio o desde la carpeta de Visual Studio. Escriba el siguiente comando para descargar e instalar IronXL en su proyecto:
PM > Install-Package IronXL.Excel
PM > Install-Package IronXL.Excel
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PM > Install-Package IronXL.Excel
$vbLabelText   $csharpLabel
  1. Agregar espacios de nombres necesarios - Para crear una datatable y usar IronXL, ambos deben estar referenciados en la parte superior del archivo Program.cs.
using IronXL; //add reference...
   using System.Data;
using IronXL; //add reference...
   using System.Data;
Imports IronXL 'add reference...
   Imports System.Data
$vbLabelText   $csharpLabel

Una vez que se cumplan todos los requisitos previos, es hora de exportar los datos del datatable a la hoja de Excel.

Crear una DataTable en C#

El siguiente código crea una nueva tabla de datos con dos encabezados de columna y múltiples filas:

//new datatable dt...
DataTable dt = new DataTable();
//add column names...
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
dt.Rows.Add("Lion", "Roars"); // first row...
dt.Rows.Add("Dog", "Barks");
dt.Rows.Add("Cat", "Meows");
dt.Rows.Add("Goat", "Bleats");
dt.Rows.Add("Wolf", "Howls");
dt.Rows.Add("Cheetah", "Purrs");
//new datatable dt...
DataTable dt = new DataTable();
//add column names...
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
dt.Rows.Add("Lion", "Roars"); // first row...
dt.Rows.Add("Dog", "Barks");
dt.Rows.Add("Cat", "Meows");
dt.Rows.Add("Goat", "Bleats");
dt.Rows.Add("Wolf", "Howls");
dt.Rows.Add("Cheetah", "Purrs");
'new datatable dt...
Dim dt As New DataTable()
'add column names...
dt.Columns.Add("Animal")
dt.Columns.Add("Sound")
dt.Rows.Add("Lion", "Roars") ' first row...
dt.Rows.Add("Dog", "Barks")
dt.Rows.Add("Cat", "Meows")
dt.Rows.Add("Goat", "Bleats")
dt.Rows.Add("Wolf", "Howls")
dt.Rows.Add("Cheetah", "Purrs")
$vbLabelText   $csharpLabel

Primero, creamos un nuevo DataTable llamado "dt". Luego, utilizando Columns.Add, podemos agregar un número especificado de columnas a la tabla de datos por nombre, en nuestro ejemplo, tenemos dos columnas llamadas "Animal" y "Sound". A continuación, usamos Rows.Add para agregar nuevas filas, colocando el contenido de cada fila dentro de los corchetes. El contenido está dividido por comas, separando cada cadena por columna.

Crear Archivo Excel usando IronXL en C#

Al crear tipos de archivo Excel desde cero con IronXL, es un proceso de dos pasos y muy fácil de implementar en C#. IronXL primero crea un libro de Excel y luego ayuda a agregar una hoja de trabajo. El siguiente código de ejemplo demuestra cómo crear un libro de trabajo junto con la hoja de trabajo:

//create new workbook...
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet ws = wb.DefaultWorkSheet;
//create new workbook...
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet ws = wb.DefaultWorkSheet;
'create new workbook...
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim ws As WorkSheet = wb.DefaultWorkSheet
$vbLabelText   $csharpLabel

Exportando Datos de una Tabla de Datos a una Hoja de Excel usando IronXL

Utilizar IronXL para agregar valores a la hoja de trabajo simplifica todo el proceso, ya que puede realizar esta tarea con un código mínimo. Aquí aprenderemos a exportar datos desde el datatable creado en la sección anterior a la nueva hoja de cálculo de Excel creada. Veamos el código paso a paso.

Agregar encabezado de columna a la hoja de cálculo de Excel

ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
int rowCount = 2;
ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
int rowCount = 2;
ws("A1").Value = dt.Columns(0).ToString()
ws("B1").Value = dt.Columns(1).ToString()
Dim rowCount As Integer = 2
$vbLabelText   $csharpLabel

En el código anterior, a la columna "A1" de la hoja de Excel se le asigna el valor de la columna 1 de la tabla de datos en el índice 0, y el siguiente valor de la columna "B1" de Excel se asigna desde la columna 2 en el índice 1 en la tabla de datos. La variable rowCount se establece en un valor de 2 para leer filas desde el datatable comenzando desde la fila dos, esto asegura que no contemos la fila de encabezado.

Agregar filas a la hoja de cálculo de Excel

El siguiente código leerá cada fila de la tabla de datos y la asignará a una nueva fila en el archivo de Excel:

foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
For Each row As DataRow In dt.Rows
	ws("A" & (rowCount)).Value = row(0).ToString()
	ws("B" & (rowCount)).Value = row(1).ToString()
	rowCount += 1
Next row
$vbLabelText   $csharpLabel

La variable rowCount se incrementa cada vez para que se lea una nueva fila de las celdas de la hoja de trabajo de datatable a Excel en el código anterior.

Guardar archivo Excel

Finalmente, guarde el archivo Excel utilizando el método SaveAs().

wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx")
$vbLabelText   $csharpLabel

El archivo también se puede guardar en otros formatos, por ejemplo, CSV (valores separados por comas), JSON, XML.

wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv")
wb.SaveAsJson("DataTable_to_Excel_IronXL.json")
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml")
$vbLabelText   $csharpLabel

También puedes guardarlo con un delimitador personalizado.

Salida

El resultado final del archivo es el siguiente:

Salida de DataTable a Excel

Resumen

En este artículo, demostramos cómo crear un DataTable con columnas y filas en C#, seguido de la generación de un libro de Excel con una hoja de trabajo predeterminada utilizando IronXL. Luego exportamos con éxito los datos tabulares del DataTable a un archivo de Excel y los guardamos en formato .xlsx.

IronXL es una biblioteca de C# fácil de usar que permite a los desarrolladores trabajar con archivos de Excel sin problemas, incluso sin tener MS Excel instalado. Admite la exportación de datos desde varios formatos, como archivos CSV, para su posterior manipulación y cálculo.

Para obtener más información sobre IronXL y su conjunto de características robustas, asegúrate de consultar su amplia documentación. ¿Quieres probarlo tú mismo? IronXL también ofrece una prueba gratuita con acceso completo a todas las funciones, ¡así que puedes comenzar a explorar cómo esta poderosa biblioteca puede mejorar tus proyectos de hojas de cálculo de inmediato!

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.
< ANTERIOR
Cómo Exportar Datatable a Excel en VB.NET
SIGUIENTE >
Cómo leer archivos Excel en C#