CÓMO: Utilizar ADO desde ASP para realizar consultas y actualizaciones en Excel

Seleccione idioma Seleccione idioma
Id. de artículo: 195951 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo demuestra cómo consultar y actualizar la información de una hoja de cálculo de Excel que utiliza objetos de datos ActiveX (ADO) desde una página de páginas Active Server (ASP). El artículo también describe las limitaciones que se asocian con este tipo de aplicación.

IMPORTANTE: aunque las aplicaciones ASP/ADO admiten el acceso a varios usuarios, no es el caso de una hoja de cálculo de Excel. Por consiguiente, este método de consultar y actualizar la información no admite el acceso simultáneo de varios usuarios.

Más información

Para tener acceso a los datos de su hoja de cálculo de Excel para este ejemplo, utilice el Controlador ODBC de Microsoft para Excel. Cree una tabla para tener acceso a los datos creando un Rango con nombre en su hoja de cálculo de Excel.

Pasos para crear la aplicación de ejemplo

  • Cree el archivo de Excel ADOtest.xls con los datos siguientes en sheet1:

    Contraer esta tablaAmpliar esta tabla
    column1column2column3
    rrthis15
    bbtest20
    eeworks25

    Nota
    Si una columna de la hoja de cálculo de Excel contiene texto y números, el controlador ODBC de Excel no puede interpretar correctamente el tipo de datos que debería tener la columna. Compruebe que todas las celdas de una columna son del mismo tipo de datos. Los tres errores siguientes se pueden producir si las celdas de una columna no son del mismo tipo o si tiene los tipos combinados entre "texto" y "general":
    1. Error '80040e21' de Proveedor OLE DB de Microsoft para controladores ODBC
      Las propiedades de la solicitud no pueden ser admitidas por este Controlador ODBC.
    2. Error '80004005' de Proveedor OLE DB de Microsoft para controladores ODBC
      No se puede actualizar la consulta dado que no contiene columnas en las que se puedan realizar búsquedas y que actúen como claves.
    3. Error '80004005' de Proveedor OLE DB de Microsoft para controladores ODBC
      Error en la actualización basada en consultas. No se encontró la fila para actualizar.
  • Cree un Rango con nombre, myRange1, en la hoja de cálculo:

    1. Resalte el área de las filas y columnas donde residen sus datos.
    2. En el menú Insertar, seleccione Nombre y haga clic en Definir.
    3. Escriba myRange1 como nombre del Rango con nombre.
    4. Haga clic en Aceptar.
    El nombre myRange1 del Rango con nombre contiene los datos siguientes:

    Contraer esta tablaAmpliar esta tabla
    column1column2column3
    rrthis15
    bbtest20
    eeworks25


    Nota
    ADO supone que la primera fila de una consulta Excel contiene los títulos de columna. Por consiguiente, el Rango con nombre debe incluir los títulos de columna. Este comportamiento se diferencia del de DAO.

    Nota
    Los títulos de columna no pueden ser un número. El controlador de Excel no puede interpretarlos y, en su lugar, devuelve una referencia de celda. Por ejemplo, un título de columna de "F1" se interpretaría mal.
  • Cree un Nombre de origen de datos (DSN) de sistema ODBC que señale al archivo ADOTest.xls.
    1. Desde el Panel de control, abra el Administrador de ODBC.
    2. En la ficha DSN del sistema, haga clic en Agregar.
    3. Seleccione Controlador de Microsoft Excel (* .xls) y haga clic en Finalizar. Si esta opción no existe, necesita instalar el controlador ODBC de Microsoft para Excel desde la instalación de Excel.
    4. Elija ADOExcel para el nombre de origen de datos.
    5. Asegúrese de que la versión está configurada en la versión correcta de Excel.
    6. Haga clic en "Seleccionar libro...", vaya al archivo ADOTest.xls y haga clic en Aceptar.
    7. Haga clic en el botón ">>Opciones" y anule la selección de la casilla de verificación "Sólo lectura".
    8. Haga clic en Aceptar y de nuevo en Aceptar.
  • Establezca los permisos en el archivo ADOTest.xls.
Si su página Active Server es de acceso anónimo, debe asegurarse de que la cuenta anónima (IUSR_nombreMáquina<>) tiene al menos acceso de lectura-escritura a la hoja de cálculo. Si desea eliminar información de la hoja de cálculo, necesita conceder permisos para ello.

Si autentica el acceso a su página Active Server, necesita garantizar que todos los usuarios con acceso a su aplicación tienen los permisos correspondientes.

Nota
Si no establece los permisos apropiados en la hoja de cálculo, obtiene un mensaje de error similar al siguiente:

Error '80004005' de Proveedor OLE DB de Microsoft para controladores ODBC

[Microsoft][Controlador ODBC de Excel] El motor de base de datos Microsoft Jet no puede abrir el archivo '(desconocido)'. Ya ha sido abierto de manera exclusiva por otro usuario o necesita permiso para ver sus datos.
  1. Cree una nueva página ASP y péguela en el siguiente código:
          <!-- Begin ASP Source Code -->
          <%@ LANGUAGE="VBSCRIPT" %>
          <%
            Set objConn = Server.CreateObject("ADODB.Connection")
            objConn.Open "ADOExcel"
    
            Set objRS = Server.CreateObject("ADODB.Recordset")
            objRS.ActiveConnection = objConn
            objRS.CursorType = 3                    'Static cursor.
            objRS.LockType = 2                      'Pessimistic Lock.
            objRS.Source = "Select * from myRange1"
            objRS.Open
       %>
       <br>
       <%
          Response.Write("Original Data")
    
          'Printing out original spreadsheet headings and values.
    
          'Note that the first recordset does not have a "value" property
          'just a "name" property.  This will spit out the column headings.
    
          Response.Write("<TABLE><TR>")
          For X = 0 To objRS.Fields.Count - 1
             Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
          Next
          Response.Write("</TR>")
          objRS.MoveFirst
    
          While Not objRS.EOF
             Response.Write("<TR>")
             For X = 0 To objRS.Fields.Count - 1
                Response.write("<TD>" & objRS.Fields.Item(X).Value)
             Next
             objRS.MoveNext
             Response.Write("</TR>")
          Wend
          Response.Write("</TABLE>")
    
          'The update is made here
    
          objRS.MoveFirst
          objRS.Fields(0).Value = "change"
          objRS.Fields(1).Value = "look"
          objRS.Fields(2).Value = "30"
          objRS.Update
    
          'Printing out spreadsheet headings and values after update.
    
          Response.Write("<br>Data after the update")
          Response.Write("<TABLE><TR>")
          For X = 0 To objRS.Fields.Count - 1
             Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
          Next
          Response.Write("</TR>")
          objRS.MoveFirst
    
          While Not objRS.EOF
             Response.Write("<TR>")
             For X = 0 To objRS.Fields.Count - 1
                Response.write("<TD>" & objRS.Fields.Item(X).Value)
             Next
             objRS.MoveNext
             Response.Write("</TR>")
          Wend
          Response.Write("</TABLE>")
    
          'ADO Object clean up.
    
          objRS.Close
          Set objRS = Nothing
    
          objConn.Close
          Set objConn = Nothing
       %>
       <!-- End ASP Source Code -->
    					
  2. Guarde y denomine la página Active Server, y véala en el explorador. Verá lo siguiente:

    Contraer esta tablaAmpliar esta tabla
    Original Data:

    Contraer esta tablaAmpliar esta tabla
    column1column2column3
    ------------------------------------------
    rrthis30
    bbtest20
    ttwow25



    Contraer esta tablaAmpliar esta tabla
    Data after the update:

    Contraer esta tablaAmpliar esta tabla
    column1column2column3
    ------------------------------------------
    changelook30
    bbtest20
    ttwow25


Nota
Se realizó una actualización en la primera fila de su Rango con nombre (después de los títulos).

271908 INFO: La versión 2.6 de MDAC no contiene Jet

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
190195 CÓMO: Extraer información de una hoja de Excel mediante DAO

Propiedades

Id. de artículo: 195951 - Última revisión: lunes, 08 de marzo de 2004 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft ActiveX Data Objects 1.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Active Server Pages 4.0
  • Microsoft Data Access Components 2.5
Palabras clave: 
kbhowto kbmdacnosweep kbcode KB195951

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com