Excel-gegevens opvragen en bijwerken met behulp van ADO van ASP
Samenvatting
In dit artikel ziet u hoe u gegevens in een Excel-spreadsheet opvraagt en bijwerkt met behulp van ActiveX Data Objects (ADO) vanaf een ASP-pagina (Active Server Pages). In het artikel worden ook de beperkingen beschreven die zijn gekoppeld aan dit type toepassing.
Belangrijk
Hoewel ASP/ADO-toepassingen toegang voor meerdere gebruikers ondersteunen, doet een Excel-spreadsheet dat niet. Daarom biedt deze methode voor het opvragen en bijwerken van gegevens geen ondersteuning voor gelijktijdige toegang voor meerdere gebruikers.
Meer informatie
Gebruik het Microsoft ODBC-stuurprogramma voor Excel om toegang te krijgen tot de gegevens in uw Excel-spreadsheet voor dit voorbeeld. Maak een tabel voor toegang tot de gegevens door een benoemd bereik te maken in uw Excel-spreadsheet.
Stappen voor het maken van een voorbeeldtoepassing
Maak het Excel-bestand ADOtest.xls met de volgende gegevens in blad1:
kolom1 kolom2 kolom3 Rr Dit 15 Bb Test 20 Ee Werkt 25 Opmerking
Als een kolom in uw Excel-werkblad zowel tekst als getallen bevat, kan het ODBC-stuurprogramma van Excel niet goed interpreteren welk gegevenstype de kolom moet zijn. Zorg ervoor dat alle cellen in een kolom van hetzelfde gegevenstype zijn. De volgende drie fouten kunnen optreden als elke cel in een kolom niet van hetzelfde type is of als u de typen 'tekst' en 'algemeen' hebt gemengd:
- Microsoft OLE DB-provider voor ODBC-stuurprogramma's fout '80040e21' De aanvraageigenschappen kunnen niet worden ondersteund door dit ODBC-stuurprogramma.
- Microsoft OLE DB-provider voor ODBC-stuurprogramma's fout '80004005' De query kan niet worden bijgewerkt omdat deze geen doorzoekbare kolommen bevat om te gebruiken als een hoopvolle sleutel.
- Microsoft OLE DB-provider voor ODBC-stuurprogramma's fout '80004005' Update op basis van query is mislukt. De rij die moet worden bijgewerkt, kan niet worden gevonden.
Maak een benoemd bereik, myRange1, in uw spreadsheet:
- Markeer de rij(en) en kolom(s) gebied waarin uw gegevens zich bevinden.
- Wijs in het menu Invoegen de optie Naam aan en klik op Definiëren.
- Voer de naam myRange1 in als naam benoemd bereik.
- Klik op OK.
Het benoemde bereik myRange1 bevat de volgende gegevens:
kolom1 kolom2 kolom3 Rr Dit 15 Bb Test 20 Ee Werkt 25 Opmerking
- ADO gaat ervan uit dat de eerste rij in een Excel-query de kolomkoppen bevat. Daarom moet het benoemde bereik de kolomkoppen bevatten. Dit is een ander gedrag dan DAO.
- Kolomkoppen kunnen geen getal zijn. Het Excel-stuurprogramma kan ze niet interpreteren en retourneert in plaats daarvan een celverwijzing. Een kolomkop van 'F1' wordt bijvoorbeeld verkeerd geïnterpreteerd.
Maak een ODBC System Data Source Name (DSN) die verwijst naar het ADOTest.xls-bestand.
- Open de ODBC-beheerder in de Configuratiescherm.
- Klik op het tabblad Systeem-DSN op Toevoegen.
- Selecteer Microsoft Excel-stuurprogramma (*.xls) en klik op Voltooien. Als deze optie niet bestaat, moet u het Microsoft ODBC-stuurprogramma voor Excel installeren vanuit Excel setup.
- Kies ADOExcel als gegevensbronnaam.
- Zorg ervoor dat de versie is ingesteld op de juiste versie van Excel.
- Klik op Werkmap selecteren..., blader naar het ADOTest.xls bestand en klik op OK.
- Klik op de knop Opties>> en schakel het selectievakje Alleen-lezen uit.
- Klik op OK en klik vervolgens nogmaals op OK.
Stel machtigingen in voor het ADOTest.xls-bestand.
Als uw active-serverpagina anoniem wordt geopend, moet u ervoor zorgen dat het anonieme account (IUSR_<MachineName>) ten minste rw-toegang (lezen/schrijven) heeft tot het spreadsheet. Als u gegevens uit het werkblad wilt verwijderen, moet u de machtigingen dienovereenkomstig verlenen.
Als u de toegang tot uw Active Server-pagina wilt verifiëren, moet u ervoor zorgen dat alle gebruikers die toegang hebben tot uw toepassing, over de juiste machtigingen beschikken.
Als u niet de juiste machtigingen voor het werkblad instelt, krijgt u een foutbericht dat er ongeveer als volgt uitziet:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Maak een nieuwe ASP-pagina en plak de volgende code:
<!-- 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 -->
Sla de pagina Active Server op en geef deze een naam en bekijk deze in de browser. U ziet het volgende:
Original Data: |column1|column2|column3| |------------|------------|------------| |rr|this|30| |bb|test|20| |tt|works|25| Data after the update: |column1|column2|column3| |------------|------------|------------| |change|look|30| |bb|test|20| |tt|works|25|
Opmerking
Er is een update uitgevoerd op de eerste rij van uw benoemd bereik (na de koppen).
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor