Saltar al pie de página
USANDO IRONXL

Cómo importar Excel a GridView en ASP.NET C#

Importar datos de Excel a un GridView en ASP.NET C# es sencillo con IronXL . Carga un libro de trabajo, convierte una hoja de trabajo en un DataTable y lo vincula a su control GridView, todo sin controladores OLEDB ni cadenas de conexión complejas.

Pruébelo usted mismo: obtenga una prueba gratuita de IronXL para seguir los ejemplos de código a continuación.

¿Cómo instalar IronXL para la integración de Excel GridView?

Antes de escribir cualquier código, debe agregar IronXL a su proyecto ASP.NET . La ruta más rápida es NuGet, ya sea desde la Consola del Administrador de paquetes de Visual Studio o desde la CLI de .NET .

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Una vez instalado, NuGet agrega todas las referencias necesarias a su proyecto. No hay controladores externos que instalar, ni proveedores OLEDB que registrar, ni ninguna dependencia de Microsoft Office en el servidor. La biblioteca se envía como un único ensamblaje administrado y funciona en Windows, Linux, macOS y entornos de alojamiento en la nube, incluido Azure App Service.

Después de la instalación, agregue los siguientes espacios de nombres a cualquier archivo de código subyacente que lea o escriba datos de Excel:

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

IronXL admite los formatos .xls (Excel 97-2003) y .xlsx (Excel 2007+), por lo que no necesita un manejo separado para cada tipo de archivo. La misma llamada WorkBook.Load maneja cualquiera de los formatos inspeccionando la firma del archivo automáticamente.

¿Por qué omitir OLEDB para el enlace de datos GridView?

Las importaciones tradicionales de Excel basadas en OLEDB requieren el motor de base de datos de Microsoft Access (ACE o JET) , que debe estar instalado en el servidor con el bitness correcto (32 bits frente a 64 bits). La implementación en diferentes entornos de servidores a menudo falla porque falta el controlador o no coincide, y Microsoft ya no envía el controlador ACE de 64 bits con Windows de manera predeterminada.

IronXL elimina esa dependencia por completo. Lee el formato Open XML o BIFF directamente en el código administrado. Obtendrá un comportamiento predecible en desarrollo, preparación y producción sin preocupaciones por la versión del controlador.

¿A qué plataformas .NET se dirige IronXL ?

IronXL está dirigido a .NET 10, .NET 8, .NET Standard 2.0 y .NET Framework 4.6.2+. Esta cobertura significa que puede utilizar la misma biblioteca independientemente de si su aplicación ASP.NET se ejecuta en formularios web clásicos, ASP.NET MVC o páginas Razor de ASP.NET Core modernas sin ningún cambio de código en la capa de manejo de Excel. Puede encontrar el paquete IronXL en NuGet para inspeccionar el historial de versiones y las notas de la versión antes de instalarlo.

¿Cuál es la forma más rápida de cargar datos de Excel en un GridView?

El método más rápido combina WorkBook.Load, sheet.ToDataTable y GridView.DataBind en aproximadamente cuatro líneas de código efectivo. Para los escenarios básicos no se requiere la creación manual de columnas ni la iteración de filas.

using IronXL;
using System.Data;

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

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();
using IronXL;
using System.Data;

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

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();
$vbLabelText   $csharpLabel

La llamada ToDataTable(true) le indica a IronXL que promueva la primera fila de la hoja de cálculo a los nombres de columna en el DataTable resultante. Cuando vincula esa tabla a un GridView con AutoGenerateColumns="true", ASP.NET crea automáticamente una columna por encabezado de Excel.

¿Cómo maneja ToDataTable los tipos de datos mixtos?

Cada valor de celda en DataTable se almacena como string de manera predeterminada cuando se llama a ToDataTable. Si su aplicación necesita columnas tipificadas (por ejemplo, decimal para datos de precios o DateTime para fechas), puede leer los valores de las celdas individualmente a través del indexador WorkSheet y convertirlos al tipo .NET apropiado antes de completar un DataTable fuertemente tipado.

Para una visualización simple en un GridView, las columnas de cadena son suficientes porque la cuadrícula representa todos los valores como texto de todos modos.

¿Cómo crear una página de formularios web ASP.NET para importar Excel?

Una página de importación mínima necesita tres controles: una entrada para cargar archivos, un botón de envío y GridView. Agregue el siguiente marcado ASPX dentro de su elemento <form runat="server">:

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />
$vbLabelText   $csharpLabel

El atributo CssClass conecta la cuadrícula a su hoja de estilo Bootstrap si está usando una, lo que le proporciona filas y bordes con estilo sin configuración adicional.

En el código subyacente, maneja el evento de clic del botón. El patrón a continuación guarda el archivo cargado en una ruta de servidor temporal, lo carga con IronXL y vincula el DataTable resultante a la cuadrícula:

using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}
using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}
$vbLabelText   $csharpLabel

Esta implementación sigue el estilo de declaraciones de nivel superior para la lógica dentro del controlador de eventos y al mismo tiempo conserva la firma de evento de Web Forms requerida. Tenga en cuenta que Directory.CreateDirectory se llama defensivamente: si la carpeta Uploads ya existe, la llamada no es una operación.

Importar Excel a GridView en ASP.NET C# con IronXL: Datos de hoja de cálculo cargados representados en un control GridView

Después de que el usuario selecciona un archivo .xlsx y hace clic en el botón de carga, la cuadrícula se completa con el contenido de la hoja de cálculo. Los nombres de las columnas provienen de la primera fila del archivo Excel y todas las filas subsiguientes se convierten en filas de datos en la cuadrícula.

¿Cómo se debe validar el archivo cargado?

Para uso en producción, debe verificar la extensión del archivo y el tipo MIME antes de procesarlo. IronXL lanzará una excepción en los formatos de archivos no compatibles, pero es mejor rechazar las cargas incorrectas en el nivel del controlador antes de tocar el sistema de archivos:

string ext = Path.GetExtension(FileUpload1.FileName).ToBajoerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}
string ext = Path.GetExtension(FileUpload1.FileName).ToBajoerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}
$vbLabelText   $csharpLabel

También debe aplicar un tamaño de archivo máximo a través de los límites de solicitud de IIS o comparando FileUpload1.FileBytes.Length con un umbral antes de llamar a SaveAs.

¿Cómo acceder a hojas de trabajo y rangos de celdas específicos?

Cuando un libro de Excel contiene varias hojas, es necesario apuntar a una específica por nombre en lugar de confiar en DefaultWorkSheet. IronXL proporciona un método GetWorkSheet que acepta el nombre de la pestaña de la hoja como una cadena.

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();
using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();
$vbLabelText   $csharpLabel

El método ToDataSet es útil cuando su aplicación necesita mostrar datos de varias hojas o permitir que el usuario elija qué hoja ver. Cada DataTable en el DataSet devuelto corresponde a una hoja de cálculo de Excel, y el nombre de la tabla coincide con el nombre de la pestaña de la hoja.

Importar Excel a GridView en ASP.NET C# con IronXL: Datos de una hoja de cálculo con nombre enlazados a un GridView

¿Cómo filtrar filas antes de vincularlas a GridView?

Si solo desea un subconjunto de filas de Excel (por ejemplo, filas donde la columna "Estado" equivale a "Activo"), lea el DataTable producido por ToDataTable, aplique un filtro DataView y vincule la vista filtrada a la cuadrícula:

DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();
DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();
$vbLabelText   $csharpLabel

DataView.RowFilter acepta la sintaxis de la cláusula WHERE de SQL estándar (el mismo lenguaje de expresión documentado en la propiedad DataColumn.Expression en Microsoft Learn ), lo que le permite ordenar y filtrar sin cargar una base de datos.

¿Cómo se comparan los métodos de importación para el enlace GridView de Excel?

Los distintos enfoques para la vinculación de Excel a GridView tienen distintas desventajas. La siguiente tabla resume los métodos más comunes para que pueda elegir el adecuado para su situación.

Comparación de los métodos de importación de Excel para el enlace de ASP.NET GridView
Método Se requiere conductor Compatibilidad con XLS Compatibilidad con XLSX Dependencia del servidor Complejidad del código
IronXL (a la tabla de datos) Ninguno Ninguno Bajo
OLEDB/JET Motor ACE/JET Parcial Controlador de 32/64 bits Alto
SDK de Open XML Ninguno No Ninguno Alto
EPPlus Ninguno No Ninguno (se requiere licencia comercial para la producción) Medio

IronXL cubre tanto los formatos XLS heredados como los XLSX modernos, no requiere la instalación de un controlador del lado del servidor y proporciona la menor complejidad de código de las opciones enumeradas. Para los equipos que ya utilizan otros productos de Iron Software , como IronPDF o IronOCR , una sola licencia de Iron Software cubre el paquete completo.

¿Cómo exportar datos de GridView a Excel?

Completar el viaje de ida y vuelta (de Excel a una cuadrícula y de regreso a Excel) es igualmente conciso con IronXL. Este patrón es útil para los botones "descargar como Excel" que permiten a los usuarios exportar lo que se muestra actualmente en la cuadrícula.

void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.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++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}
void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.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++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}
$vbLabelText   $csharpLabel

La llamada Response.TransmitFile transmite el archivo guardado al navegador, lo que activa un cuadro de diálogo de descarga. El encabezado Content-Disposition: attachment garantiza que los navegadores descarguen en lugar de intentar mostrar el archivo en línea.

Importar Excel a GridView en ASP.NET C# con IronXL: DataTable exportado de nuevo a un archivo Excel

¿Cuáles son las opciones de formato IronXL más comunes para las exportaciones?

Más allá de los datos sin procesar, IronXL le permite aplicar formato de celda antes de guardar. Puede configurar encabezados en negrita, anchos de columnas, formatos de números y colores de fondo:

// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXl.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);
// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXl.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);
$vbLabelText   $csharpLabel

Estas llamadas de formato utilizan la API de estilo de celda IronXL , que refleja el modelo de objetos del formato de archivo Excel sin requerir interoperabilidad.

¿Cuales son tus próximos pasos?

Ahora dispone de un proceso completo y sin controladores para importar archivos de Excel a un GridView ASP.NET y exportar datos de GridView a Excel mediante IronXL. Esto es lo que debemos explorar a continuación para construir sobre esta base:

  • Lea la documentación de IronXL para obtener la referencia completa de la API, incluida la evaluación de fórmulas, las operaciones de rango de celdas y la creación de gráficos.
  • Explore la biblioteca de ejemplos de código IronXL para obtener fragmentos listos para ejecutar que cubren la importación de CSV, libros de trabajo protegidos con contraseña, formato condicional y más.
  • Pruebe el tutorial de Excel a DataTable si desea una cobertura más profunda del mapeo de columnas tipificadas y el manejo de valores nulos.
  • Consulte la página de licencias de IronXL para revisar las opciones, desde licencias de desarrollo hasta redistribución OEM.
  • Revise la guía de lectura de Excel .NET de Iron Software para comprender la navegación en libros y hojas de trabajo en detalle.
  • Compare IronXL con alternativas utilizando la comparación de la biblioteca C# Excel para obtener un desglose característica por característica con OLEDB, EPPlus y SDK de Open XML.

Para las aplicaciones .NET Core y ASP.NET Core , la misma API IronXL funciona en Razor Pages y controladores MVC. La guía de IronXL ASP.NET Core explica las diferencias en el manejo de carga de archivos y los patrones de inyección de dependencia.

Si está integrando IronXL junto con la generación de documentos, la guía de integración de IronPDF muestra cómo exportar datos de GridView a un informe PDF además de Excel, lo que resulta útil para aplicaciones que necesitan ambos formatos.

Comience con la prueba gratuita de IronXL para probar todas las funciones de su proyecto antes de comprarlo. No se requiere tarjeta de crédito para la licencia de prueba.

Preguntas Frecuentes

¿Cuál es el beneficio de usar IronXL para importar Excel a GridView en ASP.NET C#?

El uso de IronXL simplifica la importación de datos de Excel a GridView en ASP.NET C#, eliminando la necesidad de complejas cadenas de conexión OLEDB e instalaciones de controladores. Permite a los desarrolladores cargar archivos XLS y XLSX, convertirlos en DataTables y mostrarlos en controles GridView con código sencillo.

¿Cómo maneja IronXL los diferentes formatos de archivos Excel?

IronXL admite varios formatos de archivo de Excel, como XLS y XLSX, lo que lo convierte en una herramienta versátil para importar datos a GridView. Garantiza compatibilidad y facilidad de uso en diferentes versiones de Excel.

¿Puede IronXL convertir archivos Excel a DataTables?

Sí, IronXL puede convertir archivos de Excel en tablas de datos, que luego se pueden visualizar fácilmente en controles GridView en ASP.NET C#. Esta función agiliza el proceso de manipulación y visualización de datos.

¿Es IronXL adecuado para archivos Excel grandes?

IronXL está diseñado para manejar archivos grandes de Excel de manera eficiente, lo que lo convierte en una opción confiable para proyectos que requieren importar cantidades sustanciales de datos a GridView en ASP.NET C#.

¿Cuáles son los problemas comunes que se evitan al utilizar IronXL?

Al utilizar IronXL, los desarrolladores pueden evitar problemas comunes como lidiar con cadenas de conexión OLEDB, compatibilidad de controladores de servidor y procesos complejos de importación de datos, reduciendo así el tiempo de depuración.

¿IronXL requiere alguna configuración de servidor especial?

No, IronXL no requiere configuraciones de servidor especiales ni controladores adicionales, lo que simplifica la implementación y reduce los gastos de mantenimiento.

¿Cómo mejora IronXL la productividad del desarrollo?

IronXL mejora la productividad del desarrollo al proporcionar una forma simple y eficiente de importar datos de Excel a GridView en ASP.NET C#, lo que permite a los desarrolladores concentrarse en otras tareas críticas sin empantanarse con las complejidades de la importación de datos.

¿Se puede integrar IronXL con aplicaciones ASP.NET C# existentes?

Sí, IronXL se puede integrar fácilmente en aplicaciones ASP.NET C# existentes, lo que permite una importación perfecta de datos de Excel a GridView sin cambios significativos en la arquitectura de la aplicación.

¿Qué lenguajes de programación son soportados por IronXL?

IronXL está diseñado principalmente para su uso en entornos C# y ASP.NET, proporcionando soporte sólido e integración para estos lenguajes de programación.

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