Interrogazione e aggiornamento dei dati di Excel mediante la tecnologia ADO da una pagina ASP

Traduzione articoli Traduzione articoli
Identificativo articolo: 195951 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I195951
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene mostrato come interrogare e aggiornare le informazioni in un foglio di calcolo di Excel mediante la tecnologia ADO (ActiveX Data Objects) da una pagina ASP (Active Server Pages). Nell'articolo vengono inoltre descritte le limitazioni associate a questo tipo di applicazione.

IMPORTANTE: sebbene le applicazioni ASP/ADO supportino l'accesso di più utenti, questo non è vero nel caso di un foglio di calcolo di Excel. Pertanto questo metodo di interrogazione e aggiornamento delle informazioni non supporta l'accesso contemporaneo di più utenti.

Informazioni

Per accedere ai dati del foglio di calcolo di Excel di questo esempio, utilizzare il driver ODBC Microsoft per Excel. Creare una tabella di accesso ai dati creando un intervallo denominato nel foglio di calcolo di Excel.

Procedura di creazione di un'applicazione di esempio

  • Creare il file di Excel ADOtest.xls con i seguenti dati nel foglio1:

    Riduci questa tabellaEspandi questa tabella
    colonna1colonna2colonna3
    rr this15
    bbtest20
    eeworks25

    Nota Se una colonna del foglio di calcolo di Excel contiene sia testo che numeri, il driver ODBC di Excel non è in grado di interpretare correttamente il tipo di dati della colonna. Accertarsi che tutte le celle di una colonna abbiano lo stesso tipo di dati. I seguenti tre errori possono verificarsi se ogni cella di una colonna non ha lo stesso tipo di dati o se i tipi sono misti ("testo" e "generale"):
    1. Errore '80040e21' del provider Microsoft OLE DB per driver ODBC
      Le proprietà della richiesta non sono supportate da questo driver ODBC.
    2. Errore "80004005" del provider Microsoft OLE DB per driver ODBC
      La query non è aggiornabile perché non contiene colonne ricercabili da utilizzare come possibile chiave.
    3. Errore "80004005" del provider Microsoft OLE DB per driver ODBC
      Aggiornamento basato su query non riuscito. Impossibile trovare la riga per eseguire l'aggiornamento.
  • Creare un intervallo denominato myRange1 nel foglio di calcolo:

    1. Evidenziare le righe e le colonne in cui si trovano i dati.
    2. Scegliere Nome dal menu Inserisci, quindi scegliere Definisci.
    3. Immettere myRange1 come nome per l'intervallo denominato.
    4. Scegliere OK.
    L'intervallo denominato myRange1 contiene i seguenti dati:

    Riduci questa tabellaEspandi questa tabella
    colonna1colonna2colonna3
    rr this15
    bbtest20
    eeworks25


    Nota In ADO viene presupposto che la prima riga di una query per Excel contenga le intestazioni di colonna. Pertanto l'intervallo denominato deve includere le intestazioni di colonna. Questo comportamento è specifico della tecnologia ADO.

    Nota Le intestazioni di colonna non possono essere costituite da numeri. Il driver di Excel non è in grado di interpretarli, pertanto restituirebbe il riferimento a una cella. Ad esempio, l'intestazione di colonna "F1" viene interpretata in modo errato.
  • Creare un nome DSN (Data Source Name) di sistema ODBC che punti al file ADOTest.xls.
    1. Nel Pannello di controllo aprire Amministratore ODBC.
    2. Nella scheda DSN di sistema scegliere Aggiungi.
    3. Selezionare Driver Microsoft Excel (*.xls), quindi scegliere Fine. Se questa opzione non è presente, è necessario installare il driver ODBC Microsoft per Excel mediante il programma di installazione di Excel.
    4. Scegliere ADOExcel come nome dell'origine dati.
    5. Assicurarsi che la versione impostata sia la versione corretta di Excel.
    6. Scegliere l'opzione relativa alla selezione della cartella di lavoro, quindi individuare il file ADOTest.xls e fare clic su OK.
    7. Scegliere il pulsante "Opzioni>>" e deselezionare la casella di controllo "Sola lettura".
    8. Scegliere OK, quindi di nuovo OK.
  • Impostare le autorizzazioni per il file ADOTest.xls.
Se si accede anonimamente alla pagina ASP, è necessario assicurarsi che l'account Anonymous (IUSR_<NomeComputer>) abbia almeno l'accesso in lettura/scrittura al foglio di calcolo. Se si desidera eliminare informazioni dal foglio di calcolo, occorre accordare le necessarie autorizzazioni.

Se si autentica l'accesso alla pagina ASP, è necessario assicurarsi che tutti gli utenti che accedono all'applicazione abbiano le autorizzazioni appropriate.

Nota Se non si impostano le autorizzazioni appropriate per il foglio di calcolo, viene visualizzato un messaggio di errore simile al seguente:

Errore "80004005" del provider Microsoft OLE DB per driver ODBC

[Microsoft][Driver ODBC Excel] Il modulo di gestione di database Microsoft Jet non è in grado di aprire il file "(sconosciuto)". Il file è già aperto con accesso esclusivo da un altro utente o è necessario disporre dell'autorizzazione per visualizzare i dati.
  1. Creare una nuova pagina ASP e incollarvi il seguente codice:
          <!-- 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. Salvare e denominare la pagina ASP e visualizzarla nel browser. Verrà visualizzato quanto segue:
          Dati originali:
    
          colonna1    colonna2    colonna3
          -----------------------------
    
          rr         this       30
          bb         test       20
          tt         works      25
    
    
          Dati dopo l'aggiornamento:
    
          colonna1    colonna2    colonna3
          -----------------------------
    
          change     look       30
          bb         test       20
          tt         works      25
    					
Nota È stato eseguito un aggiornamento della prima riga dell'intervallo denominato (dopo le intestazioni).

Riferimenti

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
190195 Estrazione di informazioni da un foglio di Excel mediante DAO

Proprietà

Identificativo articolo: 195951 - Ultima modifica: mercoledì 14 dicembre 2005 - Revisione: 5.1
Le informazioni in questo articolo si applicano 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
Chiavi: 
kbhowto kbmdacnosweep kbcode KB195951
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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