Comment faire pour interroger et mettre à jour des données Excel à l'aide d'objets ADO à partir d'une page ASP

Traductions disponibles Traductions disponibles
Numéro d'article: 195951 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article illustre comment interroger et mettre à jour les données d'une feuille de calcul Excel à l'aide des objets ADO (ActiveX Data Objects) à partir d'une page ASP (Active Server Pages). Cet article décrit en outre les restrictions associées à ce type d'application.

IMPORTANT : bien que les applications ASP/ADO prennent en charge l'accès de plusieurs utilisateurs, les feuilles de calcul Excel ne prennent pas en charge cette fonctionnalité. Par conséquent, cette méthode d'interrogation et de mise à jour des informations ne prend pas en charge l'accès simultané de plusieurs utilisateurs.

Plus d'informations

Pour accéder aux données de votre feuille de calcul Excel pour cet exemple, utilisez le pilote Microsoft ODBC pour Excel. Créez une table permettant d'accéder aux données en créant une plage nommée dans votre feuille de calcul Excel.

Étapes pour créer l'exemple d'application

  • Créez le fichier Excel ADOtest.xls en entrant les données suivantes dans la feuille1 :

    Réduire ce tableauAgrandir ce tableau
    colonne1colonne2colonne3
    rrthis15
    bbtest20
    eeworks25

    Remarque Si une colonne de votre feuille de calcul Excel contient à la fois du texte et des nombres, le pilote ODBC Excel ne peut pas interpréter correctement le type de données de la colonne. Assurez-vous que les données des cellules de la colonne sont toutes du même type. Les trois erreurs suivantes peuvent se produire si une cellule de colonne est d'un type différent ou si les types sont mélangés entre "texte" et "général" :
    1. Erreur '80040e21' du fournisseur Microsoft OLE-DB pour les pilotes ODBC
      Les propriétés de la requête ne peuvent pas être prises en charge par ce pilote ODBC.
    2. Erreur '80004005' du fournisseur Microsoft OLE-DB pour les pilotes ODBC
      La requête ne peut pas être mise à jour car elle ne contient pas de colonnes permettant la recherche.
    3. Erreur '80004005' du fournisseur Microsoft OLE-DB pour les pilotes ODBC
      La mise à jour basée sur une requête a échoué car la ligne à mettre à jour est introuvable.
  • Créez une plage nommée myRange1 dans votre feuille de calcul :

    1. sélectionnez les lignes et les colonnes contenant vos données.
    2. Dans le menu Insertion, cliquez sur Nom, puis sur Définir.
    3. Entrez le nom myRange1 comme nom de la plage nommée.
    4. Cliquez sur OK.
    La plage nommée myRange1 contient les données suivantes :

    Réduire ce tableauAgrandir ce tableau
    colonne1colonne2colonne3
    rr this15
    bbtest20
    eeworks25


    Remarque ADO suppose que la première ligne d'une demande Excel contient les en-têtes de colonnes. Par conséquent, la plage nommée doit inclure les en-têtes de colonnes. Ce comportement diffère de celui de DAO.

    Remarque Les en-têtes de colonnes ne peuvent pas être des nombres. Le pilote Excel ne peut pas les interpréter et renverra à la place une référence de cellule. Par exemple, l'en-tête de colonne "F1" serait interprété de façon incorrecte.
  • Créez un nom de source de données (DSN) ODBC pointant vers le fichier ADOTest.xls.
    1. À partir du Panneau de configuration, ouvrez l'Administrateur ODBC.
    2. Sous l'onglet DSN système, cliquez sur Ajouter.
    3. Sélectionnez Pilote Microsoft Excel (*.xls) et cliquez sur Terminer. Si cette option n'existe pas, vous devrez installer le pilote Microsoft ODBC pour Excel à l'aide du programme d'installation d'Excel.
    4. Choisissez ADOExcel comme nom de source de données.
    5. Assurez-vous que la version spécifiée est la version correcte d'Excel.
    6. Cliquez sur "Sélectionner un classeur...", naviguez vers le fichier ADOTest.xls et cliquez sur OK.
    7. Cliquez sur le bouton « Options>> » et désactivez la case à cocher « Lecture seule ».
    8. Cliquez sur OK à deux reprises.
  • Définissez les autorisations sur le fichier ADOTest.xls.
Si vous accédez à votre page ASP de façon anonyme, vous devez vous assurer que le compte anonyme (IUSR_<Nom_ordinateur>) dispose au moins d'un accès en lecture/écriture à la feuille de calcul. Si vous souhaitez supprimer des informations de la feuille de calcul, vous devez accorder les autorisations correspondantes.

Si vous authentifiez l'accès à votre page ASP, vous devez veiller à ce que tous les utilisateurs qui ont accès à votre application disposent des autorisations appropriées.

Remarque Si vous ne définissez pas les autorisations appropriées sur la feuille de calcul, un message d'erreur semblable au suivant s'affiche :

Erreur '80004005' du fournisseur Microsoft OLE-DB pour les pilotes ODBC

[Microsoft] [Pilote ODBC Excel] Le moteur de la base de données Microsoft Jet ne peut pas ouvrir le fichier '(inconnu)'. Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser ses données.
  1. Créez une page ASP et collez-y le code suivant :
    <![CDATA[
          <!-- 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")
    
          'Imprime les en-têtes et valeurs d'origine de la feuille de calcul.
    
          'Notez que le premier jeu d'enregistrements ne dispose pas d'une propriété "valeur"
          'mais seulement d'une propriété "nom".  Cela générera les en-têtes de colonnes.
    
          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>")
    
          'La mise à jour intervient ici
    
          objRS.MoveFirst
          objRS.Fields(0).Value = "change"
          objRS.Fields(1).Value = "look"
          objRS.Fields(2).Value = "30"
          objRS.Update
    
          'Imprime les en-têtes et valeurs de la feuille de calcul après la mise à jour.
    
          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>")
    
          'Nettoyage de l'objet ADO.
    
          objRS.Close
          Set objRS = Nothing
    
          objConn.Close
          Set objConn = Nothing
       %>
       <!-- End ASP Source Code -->
    					]]>
  2. Enregistrez et nommez la page ASP et affichez-la dans le navigateur. Les données suivantes s'affichent :
    <Formatting Type="FixedText"><![CDATA[
          Données d'origine :
    
          colonne1    colonne2    colonne3
          -----------------------------
    
          rr         this       30
          bb         test       20
          tt         works      25
    
    
          Données après la mise à jour :
    
          colonne1    colonne2    colonne3
          -----------------------------
    
          change     look       30
          bb         test       20
          tt         works      25
    					
Remarque Une mise à jour a été effectuée sur la première ligne de votre plage nommée (après les en-têtes).

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
190195 Comment faire pour extraire des informations d'une feuille Excel à l'aide de DAO

Propriétés

Numéro d'article: 195951 - Dernière mise à jour: jeudi 22 décembre 2005 - Version: 5.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbhowto kbmdacnosweep kbcode KB195951
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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