Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa procedura dettagliata illustra come modificare un set di dati memorizzato nella cache in una cartella di lavoro di Microsoft Office Excel senza avviare Excel usando la ServerDocument classe .
Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento per Excel. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.
Nota
Si è interessati allo sviluppo di soluzioni che estendono l'esperienza di Office tra più piattaforme? Vedere il nuovo modello di componenti aggiuntivi per Office. I componenti aggiuntivi di Office hanno un footprint ridotto rispetto ai componenti aggiuntivi e alle soluzioni VSTO ed è possibile compilarli usando quasi qualsiasi tecnologia di programmazione Web, ad esempio HTML5, JavaScript, CSS3 e XML.
In questa procedura dettagliata sono illustrati i task seguenti:
Definizione di un set di dati che contiene dati dal database AdventureWorksLT.
Creazione di istanze del set di dati in un progetto di cartella di lavoro di Excel e in un progetto di applicazione console.
Creazione di un ListObject oggetto associato al set di dati nella cartella di lavoro e popolamento di con i dati all'apertura ListObject della cartella di lavoro.
Aggiunta del set di dati nella cartella di lavoro alla cache dei dati.
Modifica di una colonna di dati nel set di dati memorizzato nella cache eseguendo il codice nell'applicazione console, senza avviare Excel.
Anche se questa procedura dettagliata presuppone che il codice sia in esecuzione nel computer di sviluppo, il codice illustrato da questa procedura dettagliata può essere usato in un server in cui non è installato Excel.
Nota
I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzare l'IDE di Visual Studio.
Prerequisiti
Per completare questa procedura dettagliata, è necessario disporre dei componenti seguenti:
Una versione di Visual Studio che include Microsoft Office Developer Tools. Per altre informazioni, vedere Configurare un computer per sviluppare soluzioni Office.
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. È possibile scaricare il database AdventureWorksLT dal repository GitHub degli esempi di SQL Server. Per altre 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: Collegare un database (SQL Server Management Studio).
Per collegare un database tramite la riga di comando, vedere Procedura: Collegare un file di database a SQL Server Express.
Creare un progetto di libreria di classi che definisce un set di dati
Per usare lo stesso set di dati in un progetto di cartella di lavoro di Excel e in un'applicazione console, è necessario definire il set di dati in un assembly separato a cui fanno riferimento entrambi i progetti. Per questa procedura dettagliata, definire il set di dati in un progetto di libreria di classi.
Per creare il progetto di libreria di classi
Avviare Visual Studio.
Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.
Nel riquadro modelli espandere Visual C# o Visual Basic e quindi fare clic su 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) o %UserProfile%\Documents (per Windows Vista) e quindi fare clic su Seleziona cartella.
Nella finestra di dialogo Nuovo progetto verificare che la casella di controllo Crea directory per la soluzione non sia selezionata.
Fare clic su OK.
Visual Studio aggiunge il progetto AdventureWorksDataSet a 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 scegliere Elimina. Questo file non è necessario per questa procedura dettagliata.
Definire un set di dati nel progetto di libreria di classi
Definire un set di dati tipizzato che contiene dati dal database AdventureWorksLT per SQL Server 2005. Più avanti in questa procedura dettagliata si farà riferimento a questo set di dati da un progetto di cartella di lavoro di Excel e da un progetto di applicazione console.
Il set di dati è un set di dati tipizzato che rappresenta i dati nella tabella Product del database AdventureWorksLT. Per altre informazioni sui set di dati tipizzato, vedere Strumenti set di dati in Visual Studio.
Per definire un set di dati tipizzato nel progetto di libreria di classi
In Esplora soluzioni fare clic sul progetto AdventureWorksDataSet.
Se la finestra Origini dati non è visibile, visualizzarla nella barra dei menu scegliendo Visualizza>altre origini dati di Windows.>
Scegliere Aggiungi nuova origine dati per avviare la Configurazione guidata origine dati.
Selezionare Databasee quindi scegliere Avanti.
Se si dispone di una connessione esistente al database AdventureWorksLT, scegliere questa connessione e fare clic su Avanti.
In caso contrario, scegliere Nuova connessionee usare la finestra di dialogo Aggiungi connessione per creare la nuova connessione. Per altre informazioni, vedere Aggiungere nuove connessioni.
Nella pagina Salva stringa di connessione nel file di configurazione dell'applicazione scegliere Avanti.
Nella pagina Scegli oggetti di database espandere Tabelle e selezionare Prodotto (SalesLT).
Fare clic su Fine.
Il file AdventureWorksLTDataSet.xsd viene aggiunto al progetto AdventureWorksDataSet . Questo file definisce gli elementi seguenti:
Un set di dati tipizzato denominato
AdventureWorksLTDataSet
. Questo set di dati rappresenta il contenuto della tabella Product nel database AdventureWorksLT.TableAdapter denominato
ProductTableAdapter
. Questo TableAdapter può essere usato per leggere e scrivere dati inAdventureWorksLTDataSet
. Per altre informazioni, vedere Panoramica di TableAdapter.Si useranno entrambi gli oggetti più avanti in questa procedura dettagliata.
In Esplora soluzioni fare clic con il pulsante destro del mouse su AdventureWorksDataSet e scegliere Compila.
Verificare che il progetto venga compilato senza errori.
Creare un progetto di cartella di lavoro di Excel
Creare un progetto di cartella di lavoro di Excel per l'interfaccia ai dati. Più avanti in questa procedura dettagliata si creerà un oggetto ListObject che visualizza i dati e si aggiungerà un'istanza del set di dati alla cache dei dati nella cartella di lavoro.
Per creare il progetto della cartella di lavoro di Excel
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione AdventureWorksDataSet, scegliere Aggiungie quindi fare clic su Nuovo progetto.
Nel riquadro modelli espandere Visual C# o Visual Basic, quindi espandere Office.
Nel nodo Office espanso selezionare il nodo 2010.
Nell'elenco dei modelli di progetto selezionare il progetto Cartella di lavoro di Excel.
Nella casella Nome digitare AdventureWorksReport. Non modificare il percorso.
Fare clic su OK.
Viene visualizzata la Creazione guidata progetto Visual Studio Tools per Office .
Assicurarsi che l'opzione Crea un 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 a Esplora soluzioni.
Aggiungere il set di dati alle origini dati nel progetto della cartella di lavoro di Excel
Prima di poter visualizzare il set di dati nella cartella di lavoro di Excel, è necessario aggiungere il set di dati alle origini dati nel progetto della cartella di lavoro di Excel.
Per aggiungere il set di dati alle origini dati nel progetto della cartella di lavoro di Excel
In Esplora soluzioni fare doppio clic su Sheet1.cs o Sheet1.vb nel progetto AdventureWorksReport.
La cartella di lavoro viene aperta nella finestra di progettazione.
Scegliere Aggiungi nuova origine dati dal menu Dati.
Viene avviata la Configurazione guidata origine dati.
Fare clic su Oggetto e quindi su Avanti.
Nella pagina Selezionare l'oggetto a cui si desidera eseguire l'associazione fare clic su Aggiungi riferimento.
Nella scheda Progetti fare clic su AdventureWorksDataSet e quindi su OK.
Nello spazio dei nomi AdventureWorksDataSet dell'assembly AdventureWorksDataSet fare clic su AdventureWorksLTDataSet e quindi su Fine.
Viene visualizzata la finestra Origini dati e AdventureWorksLTDataSet viene aggiunto all'elenco delle origini dati.
Creare un Oggetto ListObject associato a un'istanza del set di dati
Per visualizzare il set di dati nella cartella di lavoro, creare un ListObject oggetto associato a un'istanza del set di dati. Per altre informazioni sull'associazione di controlli ai dati, vedere Associare dati ai controlli nelle soluzioni Office.
Per creare un oggetto ListObject associato a un'istanza del set di dati
Nella finestra Origini dati espandere il nodo AdventureWorksLTDataSet in AdventureWorksDataSet.
Selezionare il nodo Prodotto , 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.
Viene creato un ListObject controllo denominato
productListObject
nel foglio di lavoro, a partire dalla cella A1. Allo stesso tempo vengono aggiunti al progetto un oggetto del set di dati denominatoadventureWorksLTDataSet
e un oggetto BindingSource denominatoproductBindingSource
. ListObject è associato a BindingSource, che a sua volta è associato all'oggetto del set di dati.
Aggiungere il set di dati alla cache dei dati
Per abilitare il codice all'esterno del progetto della cartella di lavoro di Excel per accedere al set di dati nella cartella di lavoro, è necessario aggiungere il set di dati alla cache dei dati. Per altre informazioni sulla cache dei dati, vedere Dati memorizzati nella cache in personalizzazioni a livello di documento e Dati della cache.
Per aggiungere il set di dati alla cache dei dati
Nella finestra di progettazione fare clic su adventureWorksLTDataSet.
Nella finestra Proprietà impostare la proprietà Modificatori su Public.
Impostare la proprietà CacheInDocument su True.
Inizializzare il set di dati nella cartella di lavoro
Prima di poter recuperare i dati dal set di dati memorizzato nella cache usando l'applicazione console, è necessario innanzitutto popolare il set di dati memorizzato nella cache con i dati.
Per inizializzare il set di dati nella cartella di lavoro
In Esplora soluzioni fare clic con il pulsante destro del mouse sul file Sheet1.cs o Sheet1.vb e scegliere Visualizza codice.
Sostituire il gestore eventi
Sheet1_Startup
con il codice seguente. Questo codice usa un'istanza dellaProductTableAdapter
classe definita nel progetto AdventureWorksDataSet per riempire il set di dati memorizzato nella cache con dati, se è attualmente vuoto.private AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter = new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter(); private void Sheet1_Startup(object sender, System.EventArgs e) { if (this.NeedsFill("adventureWorksLTDataSet")) { this.productTableAdapter.Fill(this.adventureWorksLTDataSet.Product); } }
Checkpoint
Compilare ed eseguire il progetto della cartella di lavoro di Excel per assicurarsi che venga compilato ed eseguito senza errori. Questa operazione riempie anche il set di dati memorizzato nella cache e salva i dati nella cartella di lavoro.
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 viene compilato e la cartella di lavoro viene aperta in Excel. Verifica quanto segue:
Riempie ListObject i dati.
Il valore nella colonna ListPrice per la prima riga di ListObject è 1431.5. Più avanti in questa procedura dettagliata si userà un'applicazione console per modificare i valori nella colonna ListPrice .
Salva la cartella di lavoro. Non modificare il nome del file o il percorso della cartella di lavoro.
Chiudere Excel.
Creare un progetto di applicazione console
Creare un progetto di applicazione console da usare per modificare i dati nel set di dati memorizzato nella cache nella cartella di lavoro.
Per creare il progetto di applicazione console
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione AdventureWorksDataSet, scegliere Aggiungie quindi fare clic su Nuovo progetto.
Nel riquadro Tipi di 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.
Fare clic su OK.
Visual Studio aggiunge il progetto DataWriter a Esplora soluzioni e apre il file di codice Program.cs o Module1.vb.
Modificare i dati nel set di dati memorizzato nella cache usando l'applicazione console
Usare la ServerDocument classe nell'applicazione console per leggere i dati in un oggetto locale AdventureWorksLTDataSet
, modificare questi dati e quindi salvarli di nuovo nel set di dati memorizzato nella cache.
Per modificare i dati nel set di dati memorizzato nella cache
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto DataWriter e scegliere Aggiungi riferimento.
Nella scheda .NET selezionare Microsoft.VisualStudio.Tools.Applications.
Fare clic su OK.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto DataWriter e 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.
Aggiungere il codice seguente al metodo
Main
. Questo codice dichiara gli oggetti seguenti:Istanza del
AdventureWorksLTDataSet
tipo definito nel progetto AdventureWorksDataSet .Percorso della cartella di lavoro AdventureWorksReport nella cartella di compilazione del progetto AdventureWorksReport .
Oggetto ServerDocument da utilizzare per accedere alla cache dei dati nella cartella di lavoro.
Nota
Il codice seguente presuppone che si usi una cartella di lavoro con estensione xlsx . Se la cartella di lavoro nel progetto ha un'estensione di file diversa, modificare il percorso in base alle esigenze.
AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet = new AdventureWorksDataSet.AdventureWorksLTDataSet(); string workbookPath = System.Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments) + @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"; ServerDocument serverDocument1 = null;
Aggiungere il codice seguente al
Main
metodo , dopo il codice aggiunto nel passaggio precedente. Il codice esegue queste operazioni:Usa la CachedData proprietà della ServerDocument classe per accedere al set di dati memorizzato nella cache nella cartella di lavoro.
Legge i dati dal set di dati memorizzato nella cache nel set di dati locale.
Modifica il
ListPrice
valore di ogni prodotto nella tabella Product del set di dati.Salva le modifiche apportate al set di dati memorizzato nella cache nella cartella di lavoro.
try { serverDocument1 = new ServerDocument(workbookPath); CachedDataHostItem dataHostItem1 = serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"]; CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"]; if (dataItem1 != null) { Console.WriteLine("Before reading data from the cache dataset, the local dataset has " + "{0} rows.", productDataSet.Product.Rows.Count.ToString()); // Read the cached data from the worksheet dataset into the local dataset. System.IO.StringReader schemaReader = new System.IO.StringReader(dataItem1.Schema); System.IO.StringReader xmlReader = new System.IO.StringReader(dataItem1.Xml); productDataSet.ReadXmlSchema(schemaReader); productDataSet.ReadXml(xmlReader); Console.WriteLine("After reading data from the cache dataset, the local dataset has " + "{0} rows.", productDataSet.Product.Rows.Count.ToString()); // Modify the prices of each product in the local dataset. foreach (AdventureWorksDataSet.AdventureWorksLTDataSet.ProductRow row in productDataSet.Product.Rows) { if (row.ProductCategoryID < 20) { row.ListPrice = row.ListPrice + (row.ListPrice * (Decimal).10); } else { row.ListPrice = row.ListPrice - (row.ListPrice * (Decimal).10); } } // Write the modified local dataset to the worksheet dataset using the DiffGram format. System.Text.StringBuilder stringIn = new System.Text.StringBuilder(); System.IO.StringWriter stringOut = new System.IO.StringWriter(stringIn); productDataSet.WriteXml(stringOut, System.Data.XmlWriteMode.DiffGram); dataItem1.Xml = stringIn.ToString(); serverDocument1.Save(); Console.WriteLine("The product prices have been modified."); } else { Console.WriteLine("The data object is not found in the data cache."); } } catch (System.IO.FileNotFoundException) { Console.WriteLine("The specified workbook does not exist."); } catch (System.Xml.XmlException) { Console.WriteLine("The data object has invalid XML information."); } 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.
L'applicazione console visualizza i messaggi mentre legge il set di dati memorizzato nella cache nel set di dati locale, modifica i prezzi dei prodotti nel set di dati locale e salva i nuovi valori nel set di dati memorizzato nella cache. Premere INVIO per chiudere l'applicazione.
Testare la cartella di lavoro
Quando si apre la cartella di lavoro, ListObject vengono visualizzate le modifiche apportate alla ListPrice
colonna di dati nel set di dati memorizzato nella cache.
Per testare la cartella di lavoro
Chiudere la cartella di lavoro AdventureWorksReport nella finestra di progettazione di Visual Studio, se è ancora aperta.
Aprire la cartella di lavoro AdventureWorksReport che si trova 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%\Documents\AdventureWorksReport\bin\Debug (per Windows Vista)
Verificare che il valore nella colonna ListPrice per la prima riga di ListObject sia ora 1574.65.
Chiudi la cartella di lavoro.