Utilizzo di ADO per leggere e scrivere dati in cartelle di lavoro di Excel illustrato in ExcelADO

Traduzione articoli Traduzione articoli
Identificativo articolo: 278973 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sommario

L'esempio ExcelADO.exe illustra in che modo Ŕ possibile utilizzare ADO (ActiveX Data Objects) con il provider Microsoft Jet OLE DB 4.0 per leggere e scrivere dati nelle cartelle di lavoro di Microsoft Excel.

Informazioni

Il seguente file Ŕ disponibile per il download dall'Area download Microsoft (l'installazione Ŕ in inglese):
ExcelADO.exe
Data di rilascio: 12 dicembre 2000

Per ulteriori informazioni sul download di file di supporto Microsoft, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
119591 Come ottenere file di supporto Microsoft dai servizi online
Il file Ŕ stato controllato e non contiene virus. Microsoft ha utilizzato il software antivirus pi¨ recente disponibile al momento della data di pubblicazione del file. Il file viene salvato su server con un livello di protezione avanzata che impedisce modifiche non autorizzate.

PerchÚ utilizzare ADO?

L'utilizzo di ADO per trasferire o recuperare dati da una cartella di lavoro di Excel offre agli sviluppatori diversi vantaggi in termini di automazione in Excel:
  • Prestazioni. Microsoft Excel Ŕ un server ActiveX out-of-process. ADO viene eseguito in-process e consente di ridurre il sovraccarico dovuto alle chiamate out-of-process.
  • ScalabilitÓ. Per applicazioni Web, non Ŕ sempre desiderabile automatizzare Microsoft Excel. ADO offre una soluzione pi¨ scalabile per la gestione dei dati di una cartella di lavoro.
ADO pu˛ essere utilizzato per trasferire dati non elaborati in una cartella di lavoro. Non Ŕ possibile utilizzare ADO per applicare formati o formule alle celle. Tuttavia, Ŕ possibile trasferire dati in una cartella di lavoro preformattata il cui formato viene mantenuto. Qualora fosse necessaria una formattazione "condizionale", una volta inseriti i dati Ŕ possibile ottenere tale formattazione grazie all'automazione o con una macro nella cartella di lavoro.

Specifiche del provider Jet OLE DB per cartelle di lavoro di Excel

Il modulo di gestione di database Microsoft Jet pu˛ essere utilizzato per accedere a dati in altri formati file di database, ad esempio cartelle di lavoro di Excel, attraverso driver ISAM (Indexed Sequential Access Method). Al fine di aprire i formati esterni supportati dal provider Microsoft Jet 4.0 OLE DB, Ŕ possibile specificare il tipo di database nelle proprietÓ estese per la connessione. Il provider Jet OLE DB supporta i seguenti tipi di database per le cartelle di lavoro Microsoft Excel:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
NOTA: utilizzare il tipo di database di origine Excel 5.0 per cartelle di lavoro Microsoft Excel 5.0 e 7.0 (95) e utilizzare il tipo di database di origine Excel 8.0 per cartelle di lavoro Microsoft Excel 8.0 (97) e 9.0 (2000). L'esempio ExcelADO.exe utilizza cartelle di lavoro di Excel nel formato Excel 97 e Excel 2000.

Gli esempi seguenti illustrano una connessione ADO a una cartella di lavoro di Excel 97 o 2000:
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				
Oppure
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
Convenzioni di denominazione

Vi sono molti modi per poter fare riferimento a una tabella, o intervallo, in una cartella di lavoro di Excel:
  • Utilizzare il nome foglio seguito dal simbolo del dollaro, ad esempio [Foglio1$] o [Fogliodilavoro$]). Una tabella di cartelle di lavoro a cui si fa riferimento in questo modo Ŕ costituita dall'intero intervallo utilizzato del foglio di lavoro.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					
  • Utilizzare un intervallo con un nome definito, ad esempio [Tabella1].
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					
  • Utilizzare un intervallo con un indirizzo specifico, ad esempio [Foglio1$A1:B10].
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					
Intestazioni di tabella

Con le cartelle di lavoro di Excel, la prima riga di un intervallo viene considerata come la riga di intestazione, o nomi campo, in base all'impostazione predefinita. Se il primo intervallo non contiene intestazioni sarÓ possibile specificare HDR=NO nelle proprietÓ estese della stringa di connessione. Se la prima riga non contiene intestazioni, il provider OLE DB denomina automaticamente i campi, dove F1 rappresenta il primo campo, F2 il secondo campo e cosý via.

Tipi di dati

A differenza di un database tradizionale, non vi Ŕ un modo diretto per specificare i tipi di dati per colonne nelle tabelle di Excel. Al contrario, il provider OLE DB analizza un numero limitato di righe in una colonna per stabilire il tipo di dati relativi a un campo. In base all'impostazione predefinita, il numero di righe da analizzare Ŕ pari a otto (8). ╚ possibile modificare il numero di righe da analizzare specificando un valore compreso tra uno (1) e sedici (16) in base all'impostazione MAXSCANROWS nelle proprietÓ estese della stringa di connessione.

File inclusi nell'esempio

Il file ExcelADO.exe contiene un progetto EXE standard di Visual Basic, pagine ASP (Active Server Pages), cartelle di lavoro Excel 97 ed Excel 2000 che fungono da modelli, nonchÚ un database Microsoft Access 2000. I file inclusi sono i seguenti:

File di progetto EXE standard di Visual Basic
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Pagine ASP
  • EmpData.asp
  • Orders.asp
Cartelle di lavoro di Microsoft Excel
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Database di Microsoft Access
  • Data.mdb

Come utilizzare l'esempio

Estrarre il contenuto del file con estensione exe in una cartella.

Per utilizzare il progetto Visual Basic:
  1. In Visual Basic, aprire il file ExcelADO.vbp.
  2. Selezionare Riferimenti dal menu Progetto, quindi impostare i riferimenti su Microsoft ADO Ext. for DDL and Security e Libreria Microsoft ActiveX Data Objects. Questo codice di esempio funziona con ADO 2.5 e ADO 2.6, selezionare quindi la versione appropriata per il computer in uso.
  3. Premere F5 per eseguire il programma. Viene visualizzato un modulo per la dimostrazione.
  4. Fare clic su Esempio 1. Questo esempio consente di creare una copia di OrdersTemplate.xls. Viene quindi utilizzato ADO per stabilire una connessione alla cartella di lavoro e viene aperto un Recordset nella tabella che rappresenta un intervallo definito della cartella di lavoro. Il nome dell'intervallo Ŕ Orders_Table. Vengono utilizzati i metodi AddNew/Update ADO per aggiungere record, o righe, a un intervallo definito della cartella di lavoro. Al termine dell'aggiunta di righe, la Connessione ADO viene chiusa e la cartella di lavoro viene visualizzata in Microsoft Excel. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Scegliere Nomi dal menu Inserisci di Excel, quindi selezionare Definisci.
    2. Nell'elenco dei nomi definiti, selezionare Orders_Table. Notare che il nome definito ora include i nuovi record aggiunti. Il nome definito viene utilizzato in combinazione con la funzione OFFSET di Excel per calcolare il totale dei dati aggiunti al foglio di lavoro.
    3. Chiudere Microsoft Excel e tornare all'applicazione Visual Basic.
  5. Fare clic su Esempio 2. Questo esempio consente di creare una copia di EmpDataTemplate.xls. Viene utilizzato ADO per stabilire una connessione a una cartella di lavoro e il metodo Execute della connessione ADO per inserire dati (INSERT INTO in SQL) nella cartella di lavoro. I dati vengono aggiunti a intervalli definiti (o tabelle) della cartella di lavoro. Al termine del trasferimento dei dati, la connessione viene chiusa e la cartella di lavoro risultante viene visualizzata in Excel. Dopo aver esaminato la cartella di lavoro, chiudere Microsoft Excel e tornare all'applicazione Visual Basic.

  6. Fare clic su Esempio 3. Questo esempio consente di creare una copia di ProductsTemplate.xls. Viene utilizzata la libreria oggetti Microsoft ADO Extensions 2.1 for DDL and Security (ADOX) per aggiungere una nuova tabella, o un nuovo foglio di lavoro, alla cartella di lavoro. Si ottiene quindi un Recordset ADO per la nuova tabella e i dati vengono aggiunti utilizzando i metodi AddNew/Update. Al termine dell'aggiunta di righe, la Connessione ADO viene chiusa e la cartella di lavoro viene visualizzata in Microsoft Excel. La cartella di lavoro contiene il codice della macro VBA (Visual Basic for Applications) nell'evento Apri per la cartella di lavoro. La macro viene eseguita quando viene aperta la cartella di lavoro. Se il nuovo foglio di lavoro "Prodotti" esiste nella cartella di lavoro, il codice della macro consentirÓ la formattazione del foglio di lavoro, per essere poi eliminato. Questa tecnica consente allo sviluppatore Web di spostare codice di formattazione dal server Web al client. Un'applicazione Web pu˛ trasmettere una cartella di lavoro formattata contenente dati al client e consente l'esecuzione a livello di client del codice della macro per l'applicazione di formattazione "condizionale" che potrebbe non essere possibile in un modello isolato.

    NOTA: per esaminare il codice della macro, visualizzare il modulo ThisWorkbook in VBAProject di ProductsTemplate.xls.

  7. Fare clic su Esempio 4. Questo esempio produce gli stessi risultati dell'esempio 1 ma la tecnica utilizzata per il trasferimento dei dati Ŕ leggermente differente. Nell'esempio 1, i record, o righe, vengono aggiunti al foglio di lavoro uno alla volta. L'esempio 4 aggiunge i record in blocco associando la tabella di Excel a un database di Access ed eseguendo una query di accodamento (o INSERT INTO..SELECT FROM) per accodare i record di una tabella nella tabella di Access alla tabella di Excel. Al termine del trasferimento viene annullata l'associazione della tabella di Excel dal database di Access e la cartella di lavoro risultante viene visualizzata in Excel. Chiudere Microsoft Excel e tornare all'applicazione Visual Basic.

  8. L'ultimo esempio illustra come leggere dati da una cartella di lavoro di Excel. Nell'elenco a discesa selezionare tabella, quindi scegliere Esempio 5. La finestra di controllo immediato visualizza il contenuto della tabella selezionata. Se si seleziona un intero foglio di lavoro ("Foglio1$" o "Foglio2$") per la tabella, la finestra di controllo immediato visualizzerÓ il contenuto dell'intervallo utilizzato per tale foglio di lavoro. Notare che l'intervallo utilizzato non inizia necessariamente alla riga 1, colonna 1 del foglio di lavoro. L'intervallo utilizzato inizia nella cella in alto a sinistra del foglio di lavoro contenente i dati.

    Se si seleziona un indirizzo intervallo specifico o un intervallo definito, la finestra di controllo immediato visualizzerÓ solo il contenuto di tale intervallo del foglio di lavoro.
Per utilizzare le pagine ASP:
  1. Creare una nuova cartella denominata ExcelADO nella home directory del server Web. Notare che il percorso predefinito della home directory Ŕ C:\InetPut\WWWRoot.
  2. Copiare i file seguenti nella cartella creata durante il passaggio precedente:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Gli script ASP di questo esempio consentono di creare copie dei modelli cartelle di lavoro con il metodo Copy di FileSystemObject. Per poter utilizzare il metodo Copy, il client che accede allo script deve disporre dell'accesso in scrittura alla cartella contenente la pagina ASP.
  4. Passare a Orders.asp, vale a dire, http://YourServer/ExcelADO/Orders.ASP, e notare che il browser visualizza una cartella di lavoro di Excel simile a quella dell'esempio 1 dell'applicazione Visual Basic.
  5. Passare a EmpData.asp, vale a dire, http://YourServer/ExcelADO/EmpData.ASP, e notare che il browser visualizza una cartella di lavoro di Excel simile a quella dell'esempio 2 dell'applicazione Visual Basic.
(c) Microsoft Corporation 2000, Tutti i diritti riservati. Con il contributo di Lori B. Turner, Microsoft Corporation.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
195951 HOW TO: Interrogazione e aggiornamento dei dati di Excel mediante la tecnologia ADO da una pagina ASP
194124 PRB: Restituzione di valori NULL utilizzando il metodo DAO OpenRecordset in Excel
193998 HOW TO: Lettura e visualizzazione di dati binari in ASP
247412 INFO: Metodi per il trasferimento di dati da Visual Basic a Excel
257819 HOW TO: Utilizzare ADO con dati di Excel da Visual Basic o VBA

ProprietÓ

Identificativo articolo: 278973 - Ultima modifica: venerdý 15 giugno 2007 - Revisione: 6.0
Le informazioni in questo articolo si applicano a
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
Chiavi:á
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973
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