Abfragen und Aktualisieren von Excel-Daten mit ADO von ASP

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 195951 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
195951 How To Query and Update Excel Data Using ADO From ASP
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie Informationen in einem Excel-Arbeitsblatt mit ActiveX Data Objects (ADO) von einer Active Server Pages (ASP)-Seite abfragen und aktualisieren können. Außerdem werden in diesem Artikel die mit diesem Anwendungstyp verbundenen Einschränkungen beschrieben.

Wichtig: ASP/ADO-Anwendungen unterstützen zwar den Zugriff durch mehrere Benutzer, ein Excel-Arbeitsblatt jedoch nicht. Daher unterstützt diese Methode der Abfrage und Aktualisierung von Informationen nicht den gleichzeitigen Zugriff durch mehrere Benutzer.

Weitere Informationen

Verwenden Sie für diese Beispielanwendung den Microsoft ODBC-Treiber für Excel, um auf die Daten in Ihrem Excel-Arbeitsblatt zuzugreifen. Erstellen Sie eine Tabelle, um auf die Daten zuzugreifen, indem Sie einen benannten Bereich in Ihrem Excel-Arbeitsblatt einrichten.

Anleitung zum Erstellen der Beispielanwendung

  • Erstellen Sie die Excel-Datei "ADOTest.xls" mit den folgenden Daten in Blatt1:

    Tabelle minimierenTabelle vergrößern
    Spalte1Spalte2Spalte3
    rr this15
    bbtest20
    eeworks25

    Hinweis: Wenn eine Spalte in Ihrem Excel-Arbeitsblatt sowohl Text als auch Zahlen enthält, kann der Excel ODBC-Treiber nicht korrekt interpretieren, welchen Datentyp die Spalte aufweisen soll. Stellen Sie daher sicher, dass alle Zellen in einer Spalte den gleichen Datentyp aufweisen. Wenn nicht jede Zelle in einer Spalte den gleichen Datentyp aufweist oder die Datentypen "Text" und "Allgemein" gemischt sind, können die folgenden drei Fehler auftreten (sinngemäß):
    1. Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e21'
      Die Anforderungs-Eigenschaften können von diesem ODBC-Treiber nicht unterstützt werden.
    2. Fehler '80004005' bei Microsoft OLE DB-Provider für ODBC-Treiber
      Die Abfrage ist nicht aktualisierbar, weil sie keine durchsuchbaren Spalten als erfolgversprechenden Schlüssel enthält. (The query is not updateable because it contains no searchable columns to use as a hopeful key.)
    3. Fehler '80004005' bei Microsoft OLE DB-Provider für ODBC-Treiber
      Abfragebasierte Aktualisierung fehlgeschlagen. Die zu aktualisierende Zeile konnte nicht gefunden werden. (Query based update failed. The row to update could not be found.)
  • Erstellen Sie den benannten Bereich "myRange1" in Ihrem Arbeitsblatt:

    1. Markieren Sie die Zeile(n) und Spalte(n), in denen sich Ihre Daten befinden.
    2. Zeigen Sie im Menü Einfügen auf Name, und klicken Sie auf Definieren.
    3. Geben Sie den Namen "myRange1" als Namen für den benannten Bereich ein.
    4. Klicken Sie auf OK.
    Der benannte Bereich "myRange1" enthält die folgenden Daten:

    Tabelle minimierenTabelle vergrößern
    Spalte1Spalte2Spalte3
    rr this15
    bbtest20
    eeworks25


    Hinweis: ADO geht davon aus, dass die erste Zeile in einer Excel-Abfrage die Spaltenüberschriften enthält. Daher muss der benannte Bereich die Spaltenüberschriften enthalten. Dieses Verhalten unterscheidet sich von DAO.

    Hinweis: Spaltenüberschriften können keine Zahl sein. Der Excel-Treiber kann die Überschriften dann nicht interpretieren und gibt stattdessen einen Zellbezug zurück. Beispielsweise würde die Spaltenüberschrift "F1" falsch interpretiert werden.
  • Erstellen Sie einen ODBC System-Datenquellennamen (Data Source Name, DSN), der auf die Datei "ADOTest.xls" zeigt.
    1. Öffnen Sie in der Systemsteuerung den ODBC-Administrator.
    2. Klicken Sie auf der Registerkarte System-DSN auf Hinzufügen.
    3. Wählen Sie Microsoft Excel-Treiber (*.xls) aus, und klicken Sie auf Fertig stellen. Wenn diese Option nicht vorhanden ist, müssen Sie den Microsoft ODBC-Treiber für Excel über Excel Setup installieren.
    4. Wählen Sie "ADOExcel" als Datenquellenname.
    5. Stellen Sie sicher, dass die Version auf die korrekte Version von Excel gesetzt ist.
    6. Klicken Sie auf Arbeitsmappe auswählen, wählen Sie die Datei "ADOTest.xls" aus, und klicken Sie auf OK.
    7. Klicken Sie auf die Schaltfläche Optionen>>, und deaktivieren Sie das Kontrollkästchen Schreibgeschützt.
    8. Klicken Sie auf OK und anschließend erneut auf OK.
  • Setzen Sie die Berechtigungen für die Datei "ADOTest.xls".
Wenn der Zugriff auf Ihre ASP-Seite anonym erfolgt, müssen Sie sicherstellen, dass das Anonyme Konto (IUSR_<Computername>) zumindest Schreib-/Lesezugriff (RW) auf das Arbeitsblatt hat. Wenn Sie Informationen von dem Arbeitsblatt löschen wollen, müssen Sie die entsprechenden Berechtigungen erteilen.

Wenn der Zugriff auf Ihre ASP-Seite authentifiziert erfolgen soll, müssen Sie sicherstellen, dass alle Benutzer, die auf Ihre Anwendung zugreifen, über die entsprechenden Berechtigungen verfügen.

Hinweis: Wenn Sie nicht die entsprechenden Berechtigungen für das Arbeitsblatt setzen, wird eine ähnliche Fehlermeldung wie die folgende angezeigt:

Fehler '80004005' bei Microsoft OLE DB-Provider für ODBC-Treiber

[Microsoft][ODBC Excel-Treiber] Das Microsoft Jet-Datenbankmodul kann die Datei '(unbekannt)' nicht öffnen. Sie ist bereits von einem anderen Benutzer exklusiv geöffnet, oder Sie benötigen eine Berechtigung, um die Daten lesen zu können.
  1. Erstellen Sie eine neue ASP-Seite, und fügen Sie den folgenden Code ein:
          <!-- 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. Speichern und benennen Sie Ihre ASP-Seite, und zeigen Sie sie im Browser an. Sie hat folgenden Inhalt:
          Original Data:
    
          Spalte1    Spalte2    Spalte3
    -----------------------------
    
    rr         this       30
    bb         test       20
    tt         works      25
    
    
          Data after the update:
    
          Spalte1    Spalte2    Spalte3
    -----------------------------
    
    change     look       30
    bb         test       20
    tt         works      25
    					
Hinweis: Es wurde eine Aktualisierung der ersten Zeile Ihres benannten Bereichs (nach den Überschriften) durchgeführt.

Informationsquellen

Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
190195 Wie Extrahieren von Information aus Excel-Blatt mit DAO

Eigenschaften

Artikel-ID: 195951 - Geändert am: Samstag, 21. Januar 2006 - Version: 5.1
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbhowto kbmdacnosweep kbcode KB195951
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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