Saltar al pie de página
USANDO IRONXL

Cómo Exportar Datos SQL a Excel Usando C# con IronXL

La exportación de datos de SQL Server a Microsoft Excel es un requisito común para los desarrolladores .NET que crean sistemas de informes, herramientas de análisis de datos y aplicaciones empresariales. Este tutorial muestra cómo exportar datos SQL a Excel utilizando C# con IronXL, una potente biblioteca de Excel que simplifica todo el proceso sin necesidad de instalar Microsoft Office.

Inicia tu prueba gratuita para seguir los ejemplos de código que aparecen a continuación.

Empiece con IronXL ahora.
green arrow pointer

¿Cuál es la mejor forma de exportar datos de una base de datos SQL Server?

El enfoque más eficiente para exportar datos de SQL Server a un archivo de Excel implica tres pasos: establecer una conexión de base de datos, recuperar datos en una DataTable y escribir los datos en una hoja de cálculo de Excel utilizando IronXL. A diferencia de las soluciones de Microsoft Interop, IronXL funciona de forma independiente y gestiona grandes conjuntos de datos con un rendimiento excelente.

¿Cómo conectarse a SQL Server y recuperar datos?

Antes de poder exportar datos SQL, es necesario establecer una conexión y ejecutar una consulta SQL para llenar una DataTable. La cadena de conexión contiene las credenciales de la base de datos SQL Server y la información del servidor necesaria para acceder a sus datos.

Deberá importar los siguientes espacios de nombres en su proyecto de Visual Studio:

using IronXL;
using System.Data;
using System.Data.SqlClient;
// Define connection string for SQL Server
string connectionString = @"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
// SQL query to retrieve data from SQL Server table
string sql = "SELECT * FROM Customers";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Use SqlDataAdapter to fill DataTable with query results
    SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
    DataTable dt = new DataTable();
    adapter.Fill(dt);
    // Create new workbook and worksheet
    WorkBook workBook = WorkBook.Create();
    WorkSheet workSheet = workBook.CreateWorkSheet("CustomerData");
    // Export DataTable to Excel worksheet with column names
    int rowIndex = 1;
    // Write column headers from DataTable
    for (int j = 0; j < dt.Columns.Count; j++)
    {
        workSheet.SetCellValue(0, j, dt.Columns[j].ColumnName);
    }
    // Fill worksheet with data values
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        for (int j = 0; j < dt.Columns.Count; j++)
        {
            string cellValue = dt.Rows[i][j].ToString();
            workSheet.SetCellValue(rowIndex, j, cellValue);
        }
        rowIndex++;
    }
    // Save Excel file in xlsx format
    workBook.SaveAs("CustomerExport.xlsx");
}
using IronXL;
using System.Data;
using System.Data.SqlClient;
// Define connection string for SQL Server
string connectionString = @"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
// SQL query to retrieve data from SQL Server table
string sql = "SELECT * FROM Customers";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Use SqlDataAdapter to fill DataTable with query results
    SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
    DataTable dt = new DataTable();
    adapter.Fill(dt);
    // Create new workbook and worksheet
    WorkBook workBook = WorkBook.Create();
    WorkSheet workSheet = workBook.CreateWorkSheet("CustomerData");
    // Export DataTable to Excel worksheet with column names
    int rowIndex = 1;
    // Write column headers from DataTable
    for (int j = 0; j < dt.Columns.Count; j++)
    {
        workSheet.SetCellValue(0, j, dt.Columns[j].ColumnName);
    }
    // Fill worksheet with data values
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        for (int j = 0; j < dt.Columns.Count; j++)
        {
            string cellValue = dt.Rows[i][j].ToString();
            workSheet.SetCellValue(rowIndex, j, cellValue);
        }
        rowIndex++;
    }
    // Save Excel file in xlsx format
    workBook.SaveAs("CustomerExport.xlsx");
}
$vbLabelText   $csharpLabel

Resultado

Cómo Exportar Datos SQL a Excel Usando C# con IronXL: Imagen 1 - Archivo Excel Generado

Este código crea un archivo Excel con cabeceras de columna con el formato adecuado derivadas de la estructura de tabla de SQL Server. La DataTable dt almacena los resultados de la consulta, que luego se escriben en cada celda de la hoja de Excel de forma sistemática. El siguiente código muestra el patrón del método add para rellenar las celdas de una hoja de cálculo. IronXL admite los formatos xls y xlsx para ofrecer la máxima compatibilidad con las aplicaciones de Microsoft Office.

¿Cómo exportar datos con un botón de exportación ASP.NET?

En el caso de las aplicaciones web, normalmente la exportación se activa cuando el usuario hace clic en un botón de exportación. El siguiente código muestra cómo manejar el evento de clic del botón e iniciar la descarga de un archivo utilizando Response.AddHeader para la disposición del contenido.

using IronXL;
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI;
public partial class ExportPage : Page
{
    private void ExportButton_Click(object sender, EventArgs e)
    {
        string connectionString = @"Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Execute SQL query to get data from SQL server
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);
                // Create Excel workbook from DataSet - each table becomes a sheet
                WorkBook workBook = WorkBook.Create();
                WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
                // Convert to byte array for download
                byte[] fileBytes = workBook.ToByteArray();
                string filename = "OrdersExport.xlsx";
                // Set response headers for file download
                Response.Clear();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;filename=" + filename);
                Response.BinaryWrite(fileBytes);
                Response.End();
            }
        }
        catch (Exception ex)
        {
            // Handle any errors during export
            Response.Write("Export error: " + ex.Message);
        }
    }
}
using IronXL;
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI;
public partial class ExportPage : Page
{
    private void ExportButton_Click(object sender, EventArgs e)
    {
        string connectionString = @"Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Execute SQL query to get data from SQL server
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);
                // Create Excel workbook from DataSet - each table becomes a sheet
                WorkBook workBook = WorkBook.Create();
                WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
                // Convert to byte array for download
                byte[] fileBytes = workBook.ToByteArray();
                string filename = "OrdersExport.xlsx";
                // Set response headers for file download
                Response.Clear();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;filename=" + filename);
                Response.BinaryWrite(fileBytes);
                Response.End();
            }
        }
        catch (Exception ex)
        {
            // Handle any errors during export
            Response.Write("Export error: " + ex.Message);
        }
    }
}
$vbLabelText   $csharpLabel

Ejemplo de botón de exportación

Cómo exportar datos SQL a Excel usando C# con IronXL: Imagen 2 - Ejemplo de botón de exportación ui

Resultado

Cómo Exportar Datos SQL a Excel Usando C# con IronXL: Imagen 3 - Archivo Generado

Los parámetros object sender y EventArgs e son estándar para los manejadores de eventos ASP.NET. A diferencia de Microsoft Interop, que requiere object misValue para los parámetros que faltan, IronXL utiliza una API más limpia. Cuando el usuario hace clic en el botón de exportación, este método privado void ejecuta la consulta a la base de datos, crea el documento Excel y activa la descarga del archivo a través del navegador.

¿Cómo importar datos y crear archivos de Excel con encabezados de columna?

IronXL proporciona múltiples métodos para crear archivos de Excel y importar datos de forma eficiente. El método LoadWorkSheetsFromDataSet acepta colecciones DataTable y conserva automáticamente los nombres de las columnas como encabezados en la hoja de cálculo de Excel. Este enfoque funciona a la perfección con objetos System.Data y Microsoft SQL Server.

using IronXL;
using System.Data;
using System.Data.SqlClient;
// Connection to SQL database
string connectionString = @"Data Source=.;Initial Catalog=Inventory;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Query multiple tables from database
    SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection);
    SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection);
    DataSet dataSet = new DataSet();
    productsAdapter.Fill(dataSet, "Products");
    categoriesAdapter.Fill(dataSet, "Categories");
    // Create new workbook and load all tables
    WorkBook workBook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
    // Save as xlsx file
    workBook.SaveAs("InventoryReport.xlsx");
}
using IronXL;
using System.Data;
using System.Data.SqlClient;
// Connection to SQL database
string connectionString = @"Data Source=.;Initial Catalog=Inventory;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Query multiple tables from database
    SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection);
    SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection);
    DataSet dataSet = new DataSet();
    productsAdapter.Fill(dataSet, "Products");
    categoriesAdapter.Fill(dataSet, "Categories");
    // Create new workbook and load all tables
    WorkBook workBook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
    // Save as xlsx file
    workBook.SaveAs("InventoryReport.xlsx");
}
$vbLabelText   $csharpLabel

Resultado

Cómo exportar datos SQL a Excel usando C# con IronXL: Imagen 4 - Archivo generado con encabezados de columna

Este enfoque maneja eficazmente varias tablas de SQL Server, creando fichas de hoja de cálculo independientes dentro de un único libro de trabajo. Para las aplicaciones que utilizan procedimientos almacenados, basta con sustituir la consulta SQL en línea por la llamada al procedimiento utilizando CommandType.StoredProcedure.

¿Qué pasa con las aplicaciones web con marcado HTML?

En las aplicaciones ASP.NET en las que el marcado HTML consiste en botones y cuadrículas de datos, IronXL se integra a la perfección. El marcado HTML de su página consiste en controles web estándar que activan las operaciones de exportación del lado del servidor, mientras que IronXL se encarga de toda la generación de Excel sin depender de Microsoft Office.

Para obtener información detallada sobre exportación de objetos DataSet y DataTable, visite la documentación de IronXL.

Conclusión

Exportar datos SQL a Excel utilizando C# se convierte en algo sencillo con IronXL. La biblioteca elimina las complejas dependencias de Interop a la vez que proporciona un sólido soporte para DataTable, DataSet e integración directa con bases de datos. Tanto si se trata de crear aplicaciones de consola o sistemas de informes basados en web con funciones de descarga de archivos, IronXL ofrece una generación de archivos Excel fiable.

Compre una licencia para la implementación en producción, o continúe explorando con una prueba gratuita para probar todas las capacidades de esta biblioteca de Excel en sus proyectos .NET.

Preguntas Frecuentes

¿Cómo puedo exportar datos SQL a Excel utilizando C#?

Puede exportar datos SQL a Excel utilizando C# aprovechando IronXL, una potente biblioteca de Excel. Simplifica el proceso y no requiere la instalación de Microsoft Office.

¿Cuáles son los requisitos previos para utilizar IronXL para exportar datos SQL?

Para utilizar IronXL para exportar datos SQL, necesita tener conocimientos básicos de C#, acceso a un servidor SQL y la biblioteca IronXL instalada en su entorno de desarrollo.

¿Necesito tener instalado Microsoft Office para exportar datos SQL a Excel con IronXL?

No, IronXL le permite exportar datos SQL a Excel sin necesidad de tener Microsoft Office instalado en su sistema.

¿Puede IronXL manejar grandes conjuntos de datos al exportar datos SQL a Excel?

Sí, IronXL es capaz de manejar grandes conjuntos de datos de manera eficiente, por lo que es adecuado para exportar extensos datos SQL a Excel.

¿Es IronXL compatible con todas las versiones de SQL Server?

IronXL está diseñado para funcionar con varias versiones de SQL Server, lo que garantiza la compatibilidad y la facilidad de uso en diferentes entornos.

¿Cuáles son algunos de los casos de uso de la exportación de datos SQL a Excel?

La exportación de datos SQL a Excel es útil para crear sistemas de elaboración de informes, herramientas de análisis de datos y aplicaciones empresariales en las que los datos deben ser fácilmente accesibles y compartibles en un formato de uso generalizado.

¿Admite IronXL opciones de formato para archivos de Excel?

Sí, IronXL proporciona una serie de opciones de formato, lo que le permite personalizar el aspecto y la estructura de los archivos de Excel exportados.

¿Cómo simplifica IronXL el proceso de exportación de datos SQL a Excel?

IronXL simplifica el proceso de exportación proporcionando métodos intuitivos para conectarse a SQL Server, recuperar registros de DataTable y generar archivos de Excel sin necesidad de configuraciones complejas ni software adicional.

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