Come eseguire query e aggiornare dati di Excel usando ADO da ASP
Riepilogo
Questo articolo illustra come eseguire query e aggiornare informazioni in un foglio di calcolo di Excel usando ActiveX Data Objects (ADO) da una pagina ASP (Active Server Pages). L'articolo descrive anche le limitazioni associate a questo tipo di applicazione.
Importante
Anche se le applicazioni ASP/ADO supportano l'accesso multiutente, un foglio di calcolo di Excel no. Pertanto, questo metodo di query e aggiornamento delle informazioni non supporta l'accesso simultaneo multiutente.
Ulteriori informazioni
Per accedere ai dati nel foglio di calcolo di Excel per questo esempio, usare Microsoft ODBC Driver for Excel. Creare una tabella per accedere ai dati creando un intervallo denominato nel foglio di calcolo di Excel.
Passaggi per creare un'applicazione di esempio
Creare il file di Excel ADOtest.xls con i dati seguenti in sheet1:
column1 column2 column3 Rr Questo 15 Bb test 20 Ee Funziona 25 Nota
Se una colonna nel foglio di calcolo di Excel contiene sia testo che numeri, il driver ODBC di Excel non può interpretare correttamente il tipo di dati che deve essere la colonna. Assicurarsi che tutte le celle di una colonna siano dello stesso tipo di dati. I tre errori seguenti possono verificarsi se ogni cella di una colonna non è dello stesso tipo o se i tipi sono mescolati tra "text" e "general":
- Errore '80040e21' del provider Microsoft OLE DB per i driver ODBC Le proprietà della richiesta non possono essere supportate da questo driver ODBC.
- Errore '80004005' del provider Microsoft OLE DB per i driver ODBC La query non è aggiornabile perché non contiene colonne ricercabili da usare come chiave di speranza.
- Errore del provider Microsoft OLE DB per driver ODBC "80004005" Aggiornamento basato su query non riuscito. Impossibile trovare la riga da aggiornare.
Creare un intervallo denominato, myRange1, nel foglio di calcolo:
- Evidenziare le righe e le colonne in cui si trovano i dati.
- Scegliere Nome dal menu Inserisci e fare clic su Definisci.
- Immettere il nome myRange1 per il nome dell'intervallo denominato.
- Fare clic su OK.
L'intervallo denominato myRange1 contiene i dati seguenti:
column1 column2 column3 Rr Questo 15 Bb test 20 Ee Funziona 25 Nota
- ADO presuppone che la prima riga di una query di Excel contenga le intestazioni di colonna. Pertanto, l'intervallo denominato deve includere le intestazioni di colonna. Si tratta di un comportamento diverso da DAO.
- Le intestazioni di colonna non possono essere un numero. Il driver di Excel non può interpretarli e, invece, restituisce un riferimento di cella. Ad esempio, un'intestazione di colonna "F1" verrebbe interpretata in modo errato.
Creare un DSN (System Data Source Name) ODBC che punta al file ADOTest.xls.
- Dal Pannello di controllo aprire l'amministratore ODBC.
- Nella scheda DSN di sistema fare clic su Aggiungi.
- Selezionare Microsoft Excel Driver (*.xls) e fare clic su Fine. Se questa opzione non esiste, è necessario installare il driver MICROSOFT ODBC per Excel dal programma di installazione di Excel.
- Scegliere ADOExcel come nome origine dati.
- Verificare che la versione sia impostata sulla versione corretta di Excel.
- Fare clic su "Seleziona cartella di lavoro...", passare al file ADOTest.xls e fare clic su OK.
- Fare clic sul pulsante "Opzioni>>" e deselezionare la casella di controllo "Sola lettura".
- Fare clic su OK e quindi fare di nuovo clic su OK.
Impostare le autorizzazioni per il file ADOTest.xls.
Se si accede alla pagina active server in modo anonimo, è necessario assicurarsi che l'account anonimo (IUSR_<MachineName>) disponga almeno dell'accesso di lettura/scrittura (RW) al foglio di calcolo. Se si desidera eliminare le informazioni dal foglio di calcolo, è necessario concedere le autorizzazioni di conseguenza.
Se si esegue l'autenticazione dell'accesso alla pagina Active Server, è necessario assicurarsi che tutti gli utenti che accedono all'applicazione dispongano delle autorizzazioni appropriate.
Se non si impostano le autorizzazioni appropriate nel foglio di calcolo, viene visualizzato un messaggio di errore simile al seguente:
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.
Creare una nuova pagina ASP e incollarla nel codice seguente:
<!-- 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 -->
Salvare e denominare la pagina active server e visualizzarla nel browser. Verrà visualizzato quanto segue:
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|
Nota
È stato eseguito un aggiornamento sulla prima riga dell'intervallo denominato (dopo le intestazioni).
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per