Saltar al pie de página
USANDO IRONXL

Exportar datos SQL a Excel en C# con IronXL

Exportar datos de SQL Server a Microsoft Excel es una tarea común para los desarrolladores de .NET que crean sistemas de informes, herramientas de análisis de datos y aplicaciones comerciales. Este tutorial le muestra cómo exportar datos SQL a Excel usando C# con IronXL , una biblioteca .NET Excel que maneja 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

¿Cómo instalar IronXL para exportar datos SQL?

Antes de escribir cualquier código, debes agregar IronXL a tu proyecto. La forma más rápida es a través de la consola del Administrador de paquetes NuGet en Visual Studio:

Install-Package IronXl.Excel
Install-Package IronXl.Excel
SHELL

Alternativamente, utilice la CLI de .NET :

dotnet add package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

Una vez instalado, agregue los espacios de nombres necesarios al principio del archivo. Con las instrucciones de nivel superior de .NET 10, la configuración se ve así:

using IronXL;
using System.Data;
using System.Data.SqlClient;
using IronXL;
using System.Data;
using System.Data.SqlClient;
$vbLabelText   $csharpLabel

IronXL apunta a .NET Standard 2.0 y superiores, por lo que funciona con proyectos .NET 10, .NET Framework, ASP.NET Core y Blazor sin ninguna configuración adicional. Puede encontrar el paquete en NuGet .

¿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 los datos en un DataTable y escribir los datos en una hoja de cálculo de Excel utilizando IronXL. A diferencia de las soluciones de interoperabilidad de Microsoft, IronXL funciona de forma independiente y maneja grandes conjuntos de datos sin cuellos de botella en el rendimiento debido a la sobrecarga de interoperabilidad COM.

El patrón central es sencillo. SqlDataAdapter es parte del marco de acceso a datos ADO .NET de Microsoft y ha sido la forma estándar de llenar objetos DataTable de bases de datos relacionales desde .NET 1.0:

  1. Abra un SqlConnection con su cadena de conexión
  2. Utilice SqlDataAdapter para completar un DataTable o DataSet
  3. Llame a los métodos IronXL para crear un libro de trabajo y completar las celdas de la hoja de trabajo.
  4. Guarde el libro de trabajo como .xlsx o .xls

Este enfoque es compatible con SQL Server 2012 y versiones posteriores, así como con Azure SQL Database, Amazon RDS para SQL Server y cualquier fuente de datos compatible con ADO.NET. El mismo patrón se aplica si estás trabajando con una aplicación de consola o con una herramienta de informes basada en web.

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

Antes de poder exportar datos SQL, debe establecer una conexión y ejecutar una consulta SQL para completar un 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.

El siguiente ejemplo consulta la tabla Clientes de Northwind y escribe cada fila en una hoja de cálculo de Excel utilizando la API de escritura de celdas de IronXL :

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
string sql = "SELECT * FROM Customers";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
DataTable dt = new DataTable();
adapter.Fill(dt);

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Customers");

// Write column headers
for (int col = 0; col < dt.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        workSheet.SetCellValue(row + 1, col, dt.Rows[row][col].ToString());
    }
}

workBook.SaveAs("CustomerExport.xlsx");
using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
string sql = "SELECT * FROM Customers";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
DataTable dt = new DataTable();
adapter.Fill(dt);

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Customers");

// Write column headers
for (int col = 0; col < dt.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        workSheet.SetCellValue(row + 1, col, dt.Rows[row][col].ToString());
    }
}

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. El DataTable dt almacena los resultados de la consulta, que luego se escriben en cada celda sistemáticamente utilizando índices de fila y columna basados ​​en cero. IronXL admite los formatos .xls y .xlsx para una amplia compatibilidad con las aplicaciones de Microsoft Office.

Si su tabla SQL contiene DateTime o columnas numéricas, convierta los valores de las celdas de forma adecuada antes de llamar a SetCellValue. Al pasar tipos numéricos directamente se conservan los tipos de datos de Excel y se habilitan la clasificación y los cálculos de fórmulas en las columnas exportadas.

¿Cómo se utiliza LoadWorkSheetsFromDataSet para exportar varias tablas?

Cuando su informe necesita datos de varias tablas SQL (por ejemplo, Productos y Categorías), puede cargarlos en un DataSet y dejar que IronXL cree automáticamente una hoja de cálculo por tabla. Este es el enfoque más conciso para exportar un conjunto de datos o una tabla de datos a Excel .

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

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");

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);

workBook.SaveAs("InventoryReport.xlsx");
using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

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");

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);

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

LoadWorkSheetsFromDataSet lee la propiedad TableName de cada DataTable dentro del DataSet y crea una pestaña de hoja de cálculo correspondiente. Los nombres de columnas de DataTable se convierten en la fila de encabezado de cada hoja. Este método es particularmente útil para procedimientos almacenados que devuelven múltiples conjuntos de resultados, porque puede completar el DataSet usando múltiples llamadas SqlDataAdapter y luego exportar todo en un solo paso.

Para las aplicaciones que necesitan crear archivos Excel mediante programación con formato personalizado, aún pueden acceder a hojas de cálculo individuales después de llamar a LoadWorkSheetsFromDataSet y aplicar estilos, anchos de columna o fórmulas antes de guardar.

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

En el caso de las aplicaciones web, normalmente se activa la exportación cuando un usuario hace clic en un botón. El siguiente ejemplo de formularios web ASP.NET muestra cómo controlar el evento de clic del botón, crear el libro de Excel a partir de una consulta SQL y enviar el archivo al navegador como una descarga mediante Response.AddHeader:

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";

        using SqlConnection connection = new SqlConnection(connectionString);
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet);

        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);

        byte[] fileBytes = workBook.ToByteArray();
        string filename = "OrdersExport.xlsx";

        Response.Clear();
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;filename=" + filename);
        Response.BinaryWrite(fileBytes);
        Response.End();
    }
}
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";

        using SqlConnection connection = new SqlConnection(connectionString);
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet);

        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);

        byte[] fileBytes = workBook.ToByteArray();
        string filename = "OrdersExport.xlsx";

        Response.Clear();
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;filename=" + filename);
        Response.BinaryWrite(fileBytes);
        Response.End();
    }
}
$vbLabelText   $csharpLabel

Ejemplo de botón de exportación

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

Resultado

Cómo exportar datos SQL a Excel usando C# con IronXL: Imagen 3 - Archivo generado

El método ToByteArray() convierte todo el libro de trabajo en una matriz de bytes en memoria, que luego escribe directamente en el flujo de respuesta HTTP. Esto evita escribir un archivo temporal en el disco. A diferencia de Microsoft Interop, que requiere marcadores de posición object misValue y una licencia de Office instalada en el servidor, IronXL se ejecuta completamente en código administrado sin dependencias externas.

Para proyectos ASP.NET Core y Razor Pages, reemplace Response.BinaryWrite con return File(fileBytes, contentType, filename) de su acción de controlador. El patrón de exportación de ASP.NET Core a Excel sigue el mismo enfoque de libro de trabajo a matriz de bytes.

¿Cómo agregar formato y encabezados de columnas a archivos de Excel exportados?

Las exportaciones de SQL sin procesar a menudo necesitan mejoras de presentación antes de compartirlas con los usuarios finales. IronXL le brinda control sobre los estilos de celda, anchos de columna y formatos de números después de que se hayan escrito los datos en la hoja de cálculo. El siguiente ejemplo demuestra cómo poner en negrita la fila del encabezado y ajustar automáticamente el ancho de las columnas:

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter("SELECT OrderID, CustomerID, OrderDate, Total FROM Orders", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Orders");

// Write and style header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    workSheet[0, col].Style.Font.Bold = true;
    workSheet[0, col].Style.Font.Height = 12;
}

// Write data rows with type-aware value assignment
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        object value = dt.Rows[row][col];
        if (value is DateTime date)
            workSheet.SetCellValue(row + 1, col, date.ToString("yyyy-MM-dd"));
        else if (value is decimal || value is double || value is int)
            workSheet.SetCellValue(row + 1, col, Convert.ToDouble(value));
        else
            workSheet.SetCellValue(row + 1, col, value.ToString());
    }
}

workBook.SaveAs("FormattedOrdersExport.xlsx");
using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter("SELECT OrderID, CustomerID, OrderDate, Total FROM Orders", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Orders");

// Write and style header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    workSheet[0, col].Style.Font.Bold = true;
    workSheet[0, col].Style.Font.Height = 12;
}

// Write data rows with type-aware value assignment
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        object value = dt.Rows[row][col];
        if (value is DateTime date)
            workSheet.SetCellValue(row + 1, col, date.ToString("yyyy-MM-dd"));
        else if (value is decimal || value is double || value is int)
            workSheet.SetCellValue(row + 1, col, Convert.ToDouble(value));
        else
            workSheet.SetCellValue(row + 1, col, value.ToString());
    }
}

workBook.SaveAs("FormattedOrdersExport.xlsx");
$vbLabelText   $csharpLabel

Aplicar estilo a la fila del encabezado con texto en negrita y una fuente más grande hace que los informes exportados sean más fáciles de leer en Excel. Para columnas numéricas como totales o recuentos, pasar un valor double en lugar de una cadena permite que las funciones de ordenamiento y agregación nativas de Excel funcionen correctamente en los datos exportados.

Puede explorar la gama completa de opciones de formato, incluidos los bordes de celdas, los colores de fondo y las máscaras de formato de números, en la documentación de formato de celdas de IronXL .

¿Cómo gestionar grandes conjuntos de datos SQL de forma eficiente?

Para tablas con decenas de miles de filas, la gestión de la memoria se vuelve importante. Cargar todo el conjunto de resultados en un DataTable antes de escribir en Excel funciona bien para la mayoría de los informes, pero para exportaciones muy grandes puede procesar filas en lotes o usar SqlDataReader directamente.

Al trabajar con exportaciones de gran volumen, considere las siguientes estrategias:

  • Paginar con SQL OFFSET/FETCH : divide exportaciones grandes en varias hojas de trabajo, cada una con una página de resultados. Esto permite que los tamaños de hojas individuales sean manejables en Excel.
  • Transmitir al disco : llamar a workBook.SaveAs(filePath) después de cada lote en lugar de mantener todo en la memoria con ToByteArray().
  • Limitar las columnas seleccionadas : utilice listas de columnas explícitas en su declaración SELECT en lugar de SELECT * para reducir la cantidad de datos transferidos desde SQL Server.

Para obtener orientación sobre la forma más rápida de exportar una DataTable a Excel en C# , el blog de IronXL tiene un artículo de referencia dedicado que compara diferentes enfoques y sus perfiles de memoria.

El método WorkBook.LoadWorkSheetsFromDataSet es particularmente eficiente para objetos DataSet de tamaño moderado porque maneja la iteración de filas internamente. Específicamente para el escenario de exportación de DataTable a Excel , este método reduce el código repetitivo y está optimizado para escrituras masivas.

¿Cómo importar datos desde Excel a SQL Server?

El flujo de trabajo de exportación es solo la mitad de la historia para muchas aplicaciones de informes. Es posible que también deba permitir que los usuarios descarguen una plantilla, completen datos y vuelvan a cargarla en SQL Server. IronXL hace que este flujo de trabajo bidireccional sea sencillo.

Para importar datos de Excel a una base de datos , cargue el archivo cargado con WorkBook.Load(filePath), itere sobre las filas de la hoja de cálculo e inserte cada fila usando un SqlCommand parametrizado:

using IronXL;
using System.Data.SqlClient;

WorkBook workBook = WorkBook.Load("UploadedData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

string connectionString = "Data Source=localhost;Initial Catalog=Inventory;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

// Skip header row, start at row index 1
for (int row = 1; row <= sheet.RowCount; row++)
{
    string productName = sheet[row, 0].StringValue;
    int quantity = (int)sheet[row, 1].DoubleValue;
    decimal price = (decimal)sheet[row, 2].DoubleValue;

    using SqlCommand cmd = new SqlCommand(
        "INSERT INTO Products (Name, Quantity, Price) VALUES (@name, @qty, @price)",
        connection);
    cmd.Parameters.AddWithValue("@name", productName);
    cmd.Parameters.AddWithValue("@qty", quantity);
    cmd.Parameters.AddWithValue("@price", price);
    cmd.ExecuteNonQuery();
}
using IronXL;
using System.Data.SqlClient;

WorkBook workBook = WorkBook.Load("UploadedData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

string connectionString = "Data Source=localhost;Initial Catalog=Inventory;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

// Skip header row, start at row index 1
for (int row = 1; row <= sheet.RowCount; row++)
{
    string productName = sheet[row, 0].StringValue;
    int quantity = (int)sheet[row, 1].DoubleValue;
    decimal price = (decimal)sheet[row, 2].DoubleValue;

    using SqlCommand cmd = new SqlCommand(
        "INSERT INTO Products (Name, Quantity, Price) VALUES (@name, @qty, @price)",
        connection);
    cmd.Parameters.AddWithValue("@name", productName);
    cmd.Parameters.AddWithValue("@qty", quantity);
    cmd.Parameters.AddWithValue("@price", price);
    cmd.ExecuteNonQuery();
}
$vbLabelText   $csharpLabel

Las consultas parametrizadas protegen contra la inyección de SQL al leer datos de Excel proporcionados por el usuario. La documentación de SqlCommand en Microsoft Learn cubre todas las sobrecargas y patrones de enlace de parámetros disponibles. Siempre valide los valores de las celdas antes de insertarlos: verifique si hay cadenas vacías, números fuera de rango y tipos de datos inesperados que podrían causar violaciones de restricciones en su tabla de SQL Server.

Para la dirección inversa, IronXL también admite la lectura de archivos CSV en C# para escenarios donde su fuente de datos produce salidas separadas por comas en lugar de archivos .xlsx.

¿Cómo compara IronXL con otros enfoques de exportación?

Existen varios enfoques para exportar datos SQL a Excel en .NET. La siguiente tabla resume las principales compensaciones:

Enfoques de exportación de SQL a Excel en .NET : comparación de características
Acercarse Se requiere oficina Compatibilidad con conjuntos de datos Formato Seguro para servidores
IronXL No Sí (incorporado) Estilos completos, fórmulas
Microsoft Interop Iteración manual Completo vía COM No (servidor COM)
EPPlus No Iteración manual Extenso
NPOI No Iteración manual Bien
Salida CSV No Manual Ninguno

Microsoft Interop requiere que Office esté instalado en el servidor y no es compatible con aplicaciones web del lado del servidor. IronXL, EPPlus y NPOI funcionan sin Office. La ventaja de IronXL reside en su compatibilidad de primera clase con DataSet y DataTable a través de LoadWorkSheetsFromDataSet, lo que reduce el código de exportación a unas pocas líneas en comparación con la iteración manual de filas en otras bibliotecas.

Para obtener una comparación detallada, consulte el artículo Alternativas de interoperabilidad de Microsoft Office .

¿Cuales son tus próximos pasos?

Exportar datos SQL a Excel utilizando C# se convierte en algo sencillo con IronXL. La biblioteca elimina dependencias de interoperabilidad complejas al tiempo que proporciona un sólido soporte para DataTable, DataSet e integración directa con bases de datos. Ya sea que se trate de crear aplicaciones de consola o sistemas de informes basados ​​en la web con capacidades de descarga de archivos, IronXL ofrece una generación confiable de archivos Excel en todos los tipos de proyectos .NET 10.

Para continuar construyendo sobre esta base, explore estos recursos relacionados:

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 usando C# con IronXL. Conéctese a SQL Server mediante SqlConnection y SqlDataAdapter, complete una DataTable y luego use IronXL para crear un libro y escribir las filas de datos. IronXL 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 un proyecto .NET (Framework, Core o .NET 10+), acceso a una base de datos de SQL Server y el paquete NuGet de IronXL instalado mediante Install-Package IronXl.Excel.

¿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 o servidor.

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

Sí, IronXL gestiona conjuntos de datos grandes de forma eficiente. Para exportaciones muy grandes, pagina con SQL OFFSET/FETCH, escribe en el disco con SaveAs en lugar de ToByteArray y limita las columnas seleccionadas en tu consulta SQL.

¿Cómo exporto varias tablas SQL a hojas de Excel independientes?

Use WorkBook.LoadWorkSheetsFromDataSet con un DataSet rellenado mediante varias llamadas a SqlDataAdapter. IronXL crea una hoja de cálculo por cada DataTable, asignando el nombre de cada pestaña a la propiedad DataTable.TableName.

¿Cómo puedo activar la descarga de un archivo Excel en ASP.NET?

Llama a workBook.ToByteArray() para obtener el archivo en bytes y luego escríbelo en la respuesta HTTP con los encabezados Content-Type y content-disposition correctos. En ASP.NET Core, devuelve File(fileBytes, contentType, filename) desde tu controlador.

¿Puedo volver a importar datos de Excel a SQL Server con IronXL?

Sí. Cargue el archivo Excel con WorkBook.Load, itere sobre las filas de la hoja de cálculo utilizando el indexador de IronXL e inserte cada fila utilizando un SqlCommand parametrizado para protegerse contra la inyección de SQL.

¿Cómo se compara IronXL con Microsoft Interop para la exportación de datos SQL?

IronXL no requiere tener Office instalado en el servidor, se ejecuta en código administrado y admite la exportación de conjuntos de datos de forma nativa con LoadWorkSheetsFromDataSet. Microsoft Interop requiere un servidor COM y no puede ejecutarse de forma fiable en entornos de servidor web.

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me