Procedura dettagliata: inserimento di dati in una cartella di lavoro contenuta in un server
Questa procedura dettagliata illustra come utilizzare la classe ServerDocument per inserire dati in un dataset memorizzato nella cache di una cartella di lavoro di Microsoft Office Excel senza avviare Excel. Vengono inoltre fornite istruzioni dettagliate sull'utilizzo dell'esempio di codice contenuto in Procedura: inserire dati in una cartella di lavoro sul server.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento per Excel 2007 ed Excel 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
Vengono illustrate le attività seguenti:
Definizione di un dataset contenente dati ottenuti dal database AdventureWorksLT.
Creazione di istanze del dataset in un progetto Cartella di lavoro di Excel e in un progetto di applicazione console.
Creazione di un ListObject associato al dataset nella cartella di lavoro.
Aggiunta del dataset contenuto nella cartella di lavoro nella cache di dati
Inserimento di dati nel dataset memorizzato nella cache mediante l'esecuzione di codice nell'applicazione console, senza avviare Excel.
Anche se questa procedura dettagliata presuppone che si esegua il codice nel computer di sviluppo, il codice illustrato da questa procedura dettagliata può essere utilizzato in un server in cui non è stato installato Excel.
Nota
Il computer potrebbe mostrare nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. L'edizione di Visual Studio in uso e le impostazioni utilizzate determinano questi elementi. Per ulteriori informazioni, vedere Gestione delle impostazioni.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
-
Una versione di Visual Studio 2010 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.100\).md).
Excel 2007 o Excel 2010.
Accesso a un'istanza in esecuzione di Microsoft SQL Server o Microsoft SQL Server Express a cui è collegato il database di esempio AdventureWorksLT. Tale database può essere scaricato dal sito Web CodePlex (informazioni in lingua inglese). Per ulteriori informazioni sul collegamento di un database, vedere gli argomenti seguenti:
Per collegare un database tramite SQL Server Management Studio o SQL Server Management Studio Express, vedere Procedura: Collegamento di un database (SQL Server Management Studio).
Per collegare un database tramite la riga di comando, vedere Procedura: collegamento di un file di database a SQL Server Express.
Creazione di un progetto Libreria di classi che definisce un dataset
Per utilizzare lo stesso dataset sia in un progetto Cartella di lavoro di Excel sia in un'applicazione console è necessario definire il dataset in un assembly a parte a cui entrambi questi progetti fanno riferimento. Per questa procedura dettagliata, definire il dataset in un progetto Libreria di classi.
Per creare il progetto Libreria di classi
Avviare Visual Studio.
Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
Nel riquadro dei modelli espandere Visual C# o Visual Basic, quindi scegliere Windows.
Nell'elenco dei modelli di progetto selezionare Libreria di classi.
Nella casella Nome digitare AdventureWorksDataSet.
Fare clic su Sfoglia, passare alla cartella %UserProfile%\Documenti (per Windows XP e versioni precedenti e per Windows Vista) e quindi fare clic su Seleziona cartella.
Assicurarsi che nella finestra di dialogo Nuovo progetto la casella di controllo Crea directory per soluzione non sia selezionata.
Scegliere OK.
Visual Studio aggiunge il progetto AdventureWorksDataSet in Esplora soluzioni e apre il file di codice Class1.cs o Class1.vb.
In Esplora soluzioni, fare clic con il pulsante destro del mouse su Class1.cs o Class1.vb e quindi fare clic su Elimina. Per la presente procedura dettagliata, infatti, questo file non è necessario.
Definizione di un dataset nel progetto Libreria di classi
Definire un dataset tipizzato contenente dati ottenuti dal database AdventureWorksLT per SQL Server 2005. Più avanti in questa procedura, verrà fatto riferimento a questo dataset da un progetto cartella di lavoro di Excel e da un progetto di applicazione console.
Il dataset è un dataset tipizzato che rappresenta i dati contenuti nella tabella Product del database AdventureWorksLT. Per ulteriori informazioni sui dataset tipizzati, vedere Utilizzo di dataset in Visual Studio.
Per definire un dataset tipizzato nel progetto Libreria di classi
Fare clic sul progetto AdventureWorksDataSet in Esplora soluzioni.
Scegliere Aggiungi nuova origine dati dal menu Dati.
Verrà avviata la Configurazione guidata origine dati.
Fare clic su Database, quindi scegliere Avanti.
Se già si dispone di una connessione al database AdventureWorksLT, scegliere questa connessione e fare clic su Avanti.
In caso contrario, fare clic su Nuova connessione e utilizzare la finestra di dialogo Aggiungi connessione per creare la nuova connessione. Per ulteriori informazioni, vedere Procedura dettagliata: inserimento di dati in una cartella di lavoro contenuta in un server.
Nella pagina Save the Connection String to the Application Configuration File fare clic su Next.
Nella pagina Seleziona oggetti di database, espandere Tabelle e selezionare Product (SalesLT).
Scegliere Fine.
Il file AdventureWorksLTDataSet.xsd viene aggiunto al progetto AdventureWorksDataSet. Questo file definisce gli elementi seguenti:
Un dataset tipizzato denominato AdventureWorksLTDataSet. Questo dataset rappresenta il contenuto della tabella Product contenuta nel database AdventureWorksLT.
Un TableAdapter denominato ProductTableAdapter. Questo TableAdapter può essere utilizzato per leggere e scrivere dati in AdventureWorksLTDataSet. Per ulteriori informazioni, vedere Cenni preliminari sugli oggetti TableAdapter.
Più avanti nella presente procedura questi oggetti verranno utilizzati entrambi.
In Esplora soluzioni fare clic con il pulsante destro del mouse su AdventureWorksDataSet, quindi scegliere Compila.
Verificare che il progetto venga compilato senza errori.
Creazione di un progetto Cartella di lavoro di Excel
Creare un progetto Cartella di lavoro di Excel da utilizzare come interfaccia per i dati. Più avanti in questa procedura si creerà un ListObject che visualizza i dati e si aggiungerà un'istanza del dataset alla cache di dati della cartella di lavoro.
Per creare il progetto Cartella di lavoro di Excel
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione AdventureWorksDataSet, scegliere Aggiungi e quindi fare clic su Nuovo progetto.
Nel riquadro dei modelli espandere Visual C# o Visual Basic, quindi espandere Office.
Nel nodo Office espanso, selezionare il nodo 2007 o 2010.
Nell'elenco dei modelli di progetto selezionare il progetto cartella di lavoro di Excel.
Nella casella Nome, digitare AdventureWorksReport. Non modificare il percorso.
Scegliere OK.
Verrà avviata la Creazione guidata progetto Visual Studio Tools per Office.
Verificare che l'opzione Crea nuovo documento sia selezionata e fare clic su OK.
Visual Studio apre la cartella di lavoro AdventureWorksReport nella finestra di progettazione e aggiunge il progetto AdventureWorksReport in Esplora soluzioni.
Aggiunta del dataset a origini dati contenute nel progetto Cartella di lavoro di Excel
Prima che sia possibile visualizzare il dataset contenuto nella cartella di lavoro di Excel, è necessario aggiungere il dataset alle origini dati contenute nel progetto Cartella di lavoro di Excel.
Per aggiungere il dataset alle origini dati contenute nel progetto Cartella di lavoro di Excel
In Esplora soluzioni, fare doppio clic su Sheet1.cs o Sheet1.vb sotto il progetto AdventureWorksReport.
La cartella di lavoro verrà aperta nella finestra di progettazione.
Scegliere Aggiungi nuova origine dati dal menu Dati.
Verrà avviata la Configurazione guidata origine dati.
Fare clic su Oggetto e quindi su Avanti.
Nella pagina Seleziona l'oggetto da associare, fare clic su Aggiungi riferimento.
Nella scheda Progetti, fare clic su AdventureWorksDataSet e quindi su OK.
Sotto lo spazio dei nomi AdventureWorksDataSet dell'assembly AdventureWorksDataSet, fare clic su AdventureWorksLTDataSet e quindi su Fine.
Verrà aperta la finestra Origini dati. Inoltre, AdventureWorksLTDataSet verrà aggiunto all'elenco di origini dati.
Creazione di un oggetto ListObject associato a un'istanza del dataset
Per visualizzare il dataset contenuto nella cartella di lavoro, creare un oggetto ListObject associato a un'istanza del dataset. Per ulteriori informazioni sull'associazione dei controlli ai dati, vedere Associazione di dati ai controlli nelle soluzioni Office.
Per creare un oggetto ListObject associato a un'istanza del dataset
Nella finestra Origini dati espandere il nodo AdventureWorksLTDataSet sotto AdventureWorksDataSet.
Selezionare il nodo Product, fare clic sulla freccia a discesa visualizzata e selezionare ListObject nell'elenco a discesa.
Se la freccia a discesa non viene visualizzata, verificare che la cartella di lavoro sia aperta nella finestra di progettazione.
Trascinare la tabella Product nella cella A1.
Un controllo ListObject denominato productListObject viene creato nel foglio di lavoro a partire dalla cella A1. Contemporaneamente, al progetto vengono aggiunti un oggetto dataset denominato adventureWorksLTDataSet e un BindingSource denominato productBindingSource. Il controllo ListObject viene associato all'oggetto BindingSource, che a sua volta è associato all'oggetto dataset.
Aggiunta del dataset nella cache di dati
Per consentire al codice esterno al progetto Cartella di lavoro di Excel di accedere al dataset contenuto nella cartella di lavoro, è necessario aggiungere il dataset nella cache di dati. Per ulteriori informazioni sulla cache di dati, vedere Dati memorizzati nella cache nelle personalizzazioni a livello di documento e Memorizzazione di dati nella cache.
Per aggiungere il dataset nella cache di dati
Nella finestra di progettazione, fare clic su adventureWorksLTDataSet.
Nella finestra Proprietà, impostare la proprietà Modifiers su Public.
Impostare la proprietà CacheInDocument su True.
Verifica
Compilare ed eseguire il progetto Cartella di lavoro di Excel per assicurarsi che sia la compilazione sia l'esecuzione vengano completate senza errori.
Per compilare ed eseguire il progetto
In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto AdventureWorksReport, scegliere Debug e quindi fare clic su Avvia nuova istanza.
Il progetto verrà compilato e la cartella di lavoro verrà aperta in Excel. L'oggetto ListObject in Sheet1 è vuoto perché l'oggetto adventureWorksLTDataSet nella cache di dati è ancora vuoto. Nella prossima sezione si utilizzerà un'applicazione console per popolare l'oggetto adventureWorksLTDataSet con dati.
Chiudere Excel. Non salvare le modifiche.
Creazione di un progetto di applicazione console
Creare un progetto di applicazione console da utilizzare per inserire dati nel dataset memorizzato nella cache della cartella di lavoro.
Per creare un progetto di applicazione console
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione AdventureWorksDataSet, scegliere Aggiungi e quindi fare clic su Nuovo progetto.
Nel riquadro Tipi progetto espandere Visual C# o Visual Basic e quindi fare clic su Windows.
Nel riquadro Modelli selezionare Applicazione console.
Nella casella Nome digitare DataWriter. Non modificare il percorso.
Scegliere OK.
Visual Studio aggiunge il progetto DataWriter in Esplora soluzioni e apre il file di codice Program.cs o Module1.vb.
Aggiunta di dati nel dataset memorizzato nella cache tramite l'applicazione console
Utilizzare la classe ServerDocument contenuta nell'applicazione console per popolare con dati il dataset memorizzato nella cache della cartella di lavoro.
Per aggiungere dati nel dataset memorizzato nella cache
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto DataWriter, quindi scegliere Aggiungi riferimento.
Nella scheda .NET selezionare Microsoft.VisualStudio.Tools.Applications.ServerDocument (se il progetto DataWriter è destinato a .NET Framework 4) o Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0 (se il progetto DataWriter è destinato a .NET Framework 3.5).
Scegliere OK.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto DataWriter, quindi scegliere Aggiungi riferimento.
Nella scheda Progetti, selezionare AdventureWorksDataSet e fare clic su OK.
Aprire il file Program.cs o Module1.vb nell'editor di codice.
Aggiungere l'istruzione using (per C#) o Imports (per Visual Basic) seguente all'inizio del file di codice.
Imports Microsoft.VisualStudio.Tools.Applications
using Microsoft.VisualStudio.Tools.Applications;
Aggiungere al metodo Main il seguente codice. Questo codice dichiara gli oggetti seguenti:
Istanze di tipo AdventureWorksLTDataSet e ProductTableAdapter definite nel progetto AdventureWorksDataSet.
Il percorso della cartella di lavoro AdventureWorksReport contenuta nella cartella di compilazione del progetto AdventureWorksReport.
Un oggetto ServerDocument da utilizzare per accedere alla cache di dati nella cartella di lavoro.
Nota
Il codice seguente presuppone che si utilizzi una cartella di lavoro con estensione xlsx. Se la cartella di lavoro contenuta nel progetto presenta un'estensione di file diversa, modificare il percorso di conseguenza.
Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet() Dim productTableAdapter As _ New AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter() Dim workbookPath As String = System.Environment.GetFolderPath( _ Environment.SpecialFolder.MyDocuments) & _ "\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx" Dim serverDocument1 As ServerDocument = Nothing
AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet = new AdventureWorksDataSet.AdventureWorksLTDataSet(); AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter = new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter(); string workbookPath = System.Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments) + @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"; ServerDocument serverDocument1 = null;
Aggiungere il codice seguente nel metodo Main dopo il codice aggiunto nel passaggio precedente. Mediante il codice vengono effettuate le seguenti attività:
L'oggetto dataset tipizzato viene riempito tramite l'adattatore di tabelle.
La proprietà CachedData della classe ServerDocument viene utilizzata per accedere al dataset memorizzato nella cache della cartella di lavoro.
Il metodo SerializeDataInstance viene utilizzato per popolare il dataset memorizzato nella cache con i dati ottenuti dal dataset tipizzato locale.
Try productTableAdapter.Fill(productDataSet.Product) Console.WriteLine("The local dataset is filled.") serverDocument1 = New ServerDocument(workbookPath) Dim dataHostItem1 As CachedDataHostItem = _ serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1") Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet") ' Initialize the worksheet dataset with the local dataset. If dataItem1 IsNot Nothing Then dataItem1.SerializeDataInstance(productDataSet) serverDocument1.Save() Console.WriteLine("The data is saved to the data cache.") Else Console.WriteLine("The data object is not found in the data cache.") End If Catch ex As System.Data.SqlClient.SqlException Console.WriteLine(ex.Message) Catch ex As System.IO.FileNotFoundException Console.WriteLine("The specified workbook does not exist.") Finally If Not (serverDocument1 Is Nothing) Then serverDocument1.Close() End If Console.WriteLine(vbLf & vbLf & "Press Enter to close the application.") Console.ReadLine() End Try
try { productTableAdapter.Fill(productDataSet.Product); Console.WriteLine("The local dataset is filled."); serverDocument1 = new ServerDocument(workbookPath); CachedDataHostItem dataHostItem1 = serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"]; CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"]; // Initialize the worksheet dataset with the local dataset. if (dataItem1 != null) { dataItem1.SerializeDataInstance(productDataSet); serverDocument1.Save(); Console.WriteLine("The data is saved to the data cache."); Console.ReadLine(); } else { Console.WriteLine("The data object is not found in the data cache."); } } catch (System.Data.SqlClient.SqlException ex) { Console.WriteLine(ex.Message); } catch (System.IO.FileNotFoundException) { Console.WriteLine("The specified workbook does not exist."); } finally { if (serverDocument1 != null) { serverDocument1.Close(); } Console.WriteLine("\n\nPress Enter to close the application."); Console.ReadLine(); }
In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto DataWriter, scegliere Debug e quindi fare clic su Avvia nuova istanza.
Il progetto verrà compilato e l'applicazione console visualizzerà alcuni messaggi di stato quando il dataset locale viene riempito e quando l'applicazione salva i dati nel dataset memorizzato nella cache della cartella di lavoro. Premere INVIO per chiudere l'applicazione.
Test della cartella di lavoro
Quando si apre la cartella di lavoro, ListObject visualizza i dati aggiunti al dataset memorizzato nella cache tramite l'applicazione console.
Per eseguire il test della cartella di lavoro
Se è ancora aperta, chiudere la cartella di lavoro AdventureWorksReport nella finestra di progettazione di Visual Studio.
In Esplora risorse, aprire la cartella di lavoro AdventureWorksReport contenuta nella cartella di compilazione del progetto AdventureWorksReport. Per impostazione predefinita, la cartella di compilazione si trova in uno dei percorsi seguenti:
%UserProfile%\Documenti\AdventureWorksReport\bin\Debug (per Windows XP e versioni precedenti)
%UserProfile%\Documenti\AdventureWorksReport\bin\Debug (per Windows Vista)
Verificare che dopo l'apertura della cartella di lavoro l'oggetto ListObject venga popolato con dati.
Passaggi successivi
Gli argomenti elencati di seguito offrono ulteriori informazioni sull'utilizzo di dati memorizzati nella cache:
Modifica dei dati contenuti in un dataset memorizzato nella cache senza avviare Excel. Per ulteriori informazioni, vedere Procedura dettagliata: modifica dei dati memorizzati nella cache di una cartella di lavoro contenuta in un server.
Modalità per inserire dati nella cache di dati di un documento di Word come matrice di byte in memoria anziché salvarli in un disco rigido. Per ulteriori informazioni, vedere Procedura: inserire dati nei documenti senza scriverli sul disco.
Vedere anche
Attività
Procedura: inserire dati in una cartella di lavoro sul server
Procedura: inserire dati nei documenti senza scriverli sul disco