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

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I195951
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:

    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:

    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à

ID articolo: 195951 - Ultima revisione: 12/14/2005 16:25:00 - Revisione: 5.1

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

  • kbhowto kbmdacnosweep kbcode KB195951
Feedback