Consulta y visualización de datos de Excel mediante ASP.NET, ADO.NET y Visual C# .NET

En este artículo se muestra cómo consultar y mostrar datos de una hoja de cálculo de Excel a través de una página de ASP.NET (.aspx) mediante Visual C# .NET.

              Versión original del producto: ASP.NET
Número de KB original: 306572

Creación de una hoja de cálculo de Excel de ejemplo

  1. Inicie Microsoft Excel y, a continuación, cree una nueva hoja de cálculo.

  2. Agregue la siguiente información a la nueva hoja de cálculo para crear una base de datos de Excel:

    Número de fila A N
    1 FirstName LastName
    2 Scott Bishop
    3 Katie Jordania

    Nota:

    Aunque los datos comienzan con la celda A1 en este ejemplo, puede agregar estos datos a las celdas adyacentes dentro de la hoja de cálculo.

  3. Resalte las filas y columnas donde están los datos.

  4. En el menú Insertar , seleccione Nombre y, a continuación, haga clic en Definir.

  5. En el cuadro de texto Nombres en el libro , escriba myRange1 y, a continuación, haga clic en Aceptar.

  6. En el menú Archivo, haga clic en Guardar. En la lista Guardar en , seleccione la raíz del servidor web (que suele C:\InetPub\Wwwroot\ser ). En el cuadro de texto Nombre de archivo, escriba ExcelData.xls. Haga clic en Aceptar.

  7. En el menú Archivo, haga clic en Salir.

Creación de un ejemplo de ASP.NET mediante Visual C# .NET

En este ejemplo de código se muestra cómo consultar y mostrar información en una hoja de cálculo de Excel. En el código siguiente se usa la hoja de cálculo que creó en la sección anterior.

  1. Abra Microsoft Visual Studio .NET. Se muestra el entorno de desarrollo integrado (IDE) de Visual Studio .NET.

  2. En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.

  3. En el cuadro de diálogo Nuevo proyecto , en Tipos de proyecto, haga clic en Proyectos de Visual C#. En Plantillas, haga clic en ASP.NET aplicación web.

  4. En el cuadro de diálogo Nuevo proyecto , busque los cuadros de texto Nombre y Ubicación .

    Nota:

    • El cuadro de texto Nombre no está disponible (aparece atenuado o atenuado). El cuadro de texto Ubicación contiene el texto (o similar). http://localhost/WebApplication1
    • Reemplace el texto del cuadro de texto Ubicación por http://localhost/ExcelCSTesty, a continuación, haga clic en Aceptar. Se crea un nuevo proyecto, que incluye un formulario web denominado WebForm1.aspx.
  5. En el IDE de .NET de Visual Studio, busque la ventana Explorador de soluciones. Si no lo encuentra, haga clic en Explorador de soluciones en el menú Ver.

  6. En Explorador de soluciones, haga clic con el botón derecho en WebForm1.aspx y, a continuación, haga clic en Ver Designer para mostrar el diseñador para la apariencia de la página. El diseñador permite agregar controles y manipular la apariencia de la página.

  7. Busque el cuadro de herramientas. Dependiendo de la configuración de la opción del IDE, el cuadro de herramientas puede aparecer como una ventana o un botón (que a menudo aparece en el lado izquierdo del IDE). Si no encuentra el cuadro de herramientas, haga clic en Cuadro de herramientas en el menú Ver .

    Si el cuadro de herramientas aparece como un botón, mueva el puntero sobre el botón para que se muestre el contenido del cuadro de herramientas.

  8. Cuando la vista del diseñador de un formulario web está activa, el cuadro de herramientas se divide en secciones, incluidas las secciones Web Forms, Componentes, HTML y otras. Haga clic en la sección Web Forms.

  9. En la sección Web Forms del cuadro de herramientas, haga clic en DataGrid y arrástrelo al diseñador de WebForm1.

  10. Haga clic con el botón derecho en WebForm1.aspx y, a continuación, haga clic en Ver código para mostrar el origen de la página de código subyacente.

  11. Agregue las siguientes instrucciones a la parte superior de la página de código subyacente, encima de la sección de espacio de nombres:

    using System.Data.OleDb;
    using System.Data;
    
  12. Resalte el código siguiente, haga clic con el botón derecho en el código y, a continuación, haga clic en Copiar. En WebForm1.aspx.cs, pegue el código en el Page_Load evento:

    // Create connection string variable. Modify the "Data Source"
    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    "Extended Properties=Excel 8.0;";
    
    // Create connection object by using the preceding connection string.
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    
    // Open connection with the database.
    objConn.Open();
    
    // The code to follow uses a SQL SELECT command to display the data from the worksheet.
    // Create new OleDbCommand to return data from worksheet.
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);
    
    // Create new OleDbDataAdapter that is used to build a DataSet
    // based on the preceding SQL SELECT statement.
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    
    // Pass the Select command to the adapter.
    objAdapter1.SelectCommand = objCmdSelect;
    
    // Create new DataSet to hold information from the worksheet.
    DataSet objDataset1 = new DataSet();
    
    // Fill the DataSet with the information from the worksheet.
    objAdapter1.Fill(objDataset1, "XLData");
    
    // Bind data to DataGrid control.
    DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
    DataGrid1.DataBind();
    
    // Clean up objects.
    objConn.Close();
    
  13. En el menú Archivo , haga clic en Guardar todo para guardar los archivos del proyecto.

  14. En el menú Compilar , haga clic en Compilar para compilar el proyecto. Este paso prepara el código en la página de código subyacente para que se pueda ejecutar.

  15. En Explorador de soluciones, haga clic con el botón derecho en WebForm1.aspx y, a continuación, haga clic en Ver en el explorador para ejecutar el código.

Explicación de código adicional

En el ejemplo de código de este artículo se usa el proveedor OLE DB de Microsoft Jet para acceder a la hoja de cálculo de Excel. Este código usa la siguiente cadena de conexión para conectarse a la hoja de cálculo:

// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
"Extended Properties=Excel 8.0;";

Como indican los comentarios, debe modificar la información de ruta de acceso de la hoja de cálculo específica de Excel. Además, también debe establecer el valor del Extended Properties parámetro para conectarse correctamente al archivo.

Nota:

El cadena de conexión usa la Server.MapPath función . Esta función toma una ruta de acceso relativa a Microsoft Internet Information Services (IIS) a un archivo y devuelve una ruta de acceso del disco duro a ese archivo. Por ejemplo, en la sección Crear hoja de cálculo de Excel de ejemplo , se crean ExcelData.xls en el directorio raíz web, que normalmente se encuentra en C:\Inetpub\Wwwroot. Esto también crea una subcarpeta denominada ExcelCSTest dentro de la carpeta Wwwroot y un archivo denominado WebForm1.aspx dentro del _ExcelCSTest_folder.

En este ejemplo, la ruta de acceso del archivo en el disco duro es similar C:\Inetpub\Wwwroot\ExcelCSTesta . Wwwroot contiene ExcelData.xls, ExcelCSTest contiene WebForm1.aspx.

La ruta de acceso de IIS a los archivos es como C:\Web Root\ExcelCSTest. Y Raíz web contiene ExcelData.xls, ExcelCSTest contiene WebForm1.aspx.

En este caso, la ruta de acceso relativa de la página WebForm1.aspx al archivo ExcelData.xls es .. /ExcelData.xls. . . / los caracteres informan a IIS de que suba un nivel de carpeta. Por lo tanto, el código Server.MapPath("../ExcelData.xls") devuelve la siguiente cadena:

C:\Inetpub\Wwwroot\ExcelData.xls

No es necesario usar Server.MapPath. También puede codificar esta información de forma rígida en una ruta de acceso específica, o puede usar cualquier método para proporcionar la ubicación del archivo de Excel en el disco duro.

Referencias

Para obtener más información sobre el uso de ADO.NET, vea Cómo rellenar un objeto DataSet desde una base de datos mediante Visual C# .NET

Nota:

Las empresas, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares y eventos descritos aquí son ficticios. No se pretende o debe deducirse ninguna asociación con ninguna empresa, organización, producto, nombre de dominio, dirección de correo electrónico, logotipo, persona, lugares o eventos reales.