Procédure pas à pas : modification des données mises en cache dans un classeur sur un serveurWalkthrough: Changing Cached Data in a Workbook on a Server

Cette procédure pas à pas montre comment modifier un jeu de données est mise en cache dans un classeur Microsoft Office Excel sans démarrer Excel à l’aide de la ServerDocument classe.This walkthrough demonstrates how to modify a dataset that is cached in a Microsoft Office Excel workbook without starting Excel by using the ServerDocument class.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document pour Excel.Applies to: The information in this topic applies to document-level projects for Excel. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features Available by Office Application and Project Type.

Cette procédure pas à pas décrit les tâches suivantes :This walkthrough illustrates the following tasks:

  • Définition d’un dataset qui contient les données à partir de la base de données AdventureWorksLT.Defining a dataset that contains data from the AdventureWorksLT database.

  • Création d’instances du jeu de données dans un projet de classeur Excel et un projet d’application console.Creating instances of the dataset in an Excel workbook project and a console application project.

  • Création d’un ListObject qui est liée au jeu de données dans le classeur et remplissage du ListObject avec des données lorsque le classeur est ouvert.Creating a ListObject that is bound to the dataset in the workbook, and populating the ListObject with data when the workbook is opened.

  • Ajout du jeu de données dans le classeur dans le cache de données.Adding the dataset in the workbook to the data cache.

  • Modification d’une colonne de données dans le dataset mis en cache en exécutant le code dans l’application console, sans démarrer Excel.Modifying a column of data in the cached dataset by running code in the console application, without starting Excel.

    Bien que cette procédure pas à pas suppose que vous exécutez le code sur votre ordinateur de développement, le code illustré dans cette procédure pas à pas peut être utilisé sur un serveur qui n’ont pas installé Excel.Although this walkthrough assumes that you are running the code on your development computer, the code demonstrated by this walkthrough can be used on a server that does not have Excel installed.

Note

Il est possible que pour certains des éléments de l’interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. L’édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments.The Visual Studio edition that you have and the settings that you use determine these elements. Pour plus d’informations, consultez Personnaliser l’IDE Visual Studio.For more information, see Personalize the Visual Studio IDE.

PrérequisPrerequisites

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :You need the following components to complete this walkthrough:

Création d’un projet de bibliothèque de classes qui définit un jeu de donnéesCreating a Class Library Project That Defines a Dataset

Pour utiliser le même jeu de données dans un projet de classeur Excel et une application console, vous devez définir le jeu de données dans un assembly distinct qui est référencé par ces deux projets.To use the same dataset in an Excel workbook project and a console application, you must define the dataset in a separate assembly that is referenced by both of these projects. Pour cette procédure pas à pas, définissez le jeu de données dans un projet de bibliothèque de classes.For this walkthrough, define the dataset in a class library project.

Pour créer le projet de bibliothèque de classesTo create the class library project

  1. Démarrez Visual StudioVisual Studio.Start Visual StudioVisual Studio.

  2. Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.On the File menu, point to New, and then click Project.

  3. Dans le volet Modèles, développez Visual C# ou Visual Basic, puis cliquez sur Windows.In the templates pane, expand Visual C# or Visual Basic, and then click Windows.

  4. Dans la liste des modèles de projet, sélectionnez bibliothèque de classes.In the list of project templates, select Class Library.

  5. Dans le nom , tapez AdventureWorksDataSet.In the Name box, type AdventureWorksDataSet.

  6. Cliquez sur Parcourir, accédez à votre %UserProfile%\My Documents (Windows XP ou version antérieure) ou le dossier %UserProfile%\Documents (pour Windows Vista), puis cliquez sur sélectionner le dossier.Click Browse, navigate to your %UserProfile%\My Documents (for Windows XP and earlier) or %UserProfile%\Documents (for Windows Vista) folder, and then click Select Folder.

  7. Dans le nouveau projet boîte de dialogue zone, vérifiez que le créer le répertoire pour la solution case à cocher n’est pas activée.In the New Project dialog box, ensure that the Create directory for solution check box is not selected.

  8. Cliquez sur OK.Click OK.

    Visual StudioVisual Studio Ajoute le AdventureWorksDataSet projet l’Explorateur de solutions et ouvre le Class1.cs ou Class1.vb fichier de code. adds the AdventureWorksDataSet project to Solution Explorer and opens the Class1.cs or Class1.vb code file.

  9. Dans l’Explorateur de solutions, avec le bouton droit Class1.cs ou Class1.vb, puis cliquez sur supprimer.In Solution Explorer, right-click Class1.cs or Class1.vb, and then click Delete. Il est inutile ce fichier pour cette procédure pas à pas.You do not need this file for this walkthrough.

Définition d’un Dataset dans le projet de bibliothèque de classesDefining a Dataset in the Class Library Project

Définissez un dataset typé qui contient les données à partir de la base de données AdventureWorksLT pour SQL Server 2005.Define a typed dataset that contains data from the AdventureWorksLT database for SQL Server 2005. Plus loin dans cette procédure pas à pas, vous ferez référence ce jeu de données à partir d’un projet de classeur Excel et un projet d’application console.Later in this walkthrough, you will reference this dataset from an Excel workbook project and a console application project.

Le jeu de données est un dataset typé qui représente les données dans la table Product de la base de données AdventureWorksLT.The dataset is a typed dataset that represents the data in the Product table of the AdventureWorksLT database. Pour plus d’informations sur les datasets typés, consultez outils Dataset dans Visual Studio.For more information about typed datasets, see Dataset tools in Visual Studio.

Pour définir un dataset typé dans le projet de bibliothèque de classesTo define a typed dataset in the class library project

  1. Dans l’Explorateur de solutions, cliquez sur le AdventureWorksDataSet projet.In Solution Explorer, click the AdventureWorksDataSet project.

  2. Si la fenêtre Sources de données n'est pas visible, affichez-la en choisissant, dans la barre de menus, Affichage, Autres fenêtres, Sources de données.If the Data Sources window is not visible, display it by, on the menu bar, choosing View, Other Windows, Data Sources.

  3. Choisissez Ajouter une nouvelle source de données pour démarrer l' Assistant Configuration de source de données.Choose Add New Data Source to start the Data Source Configuration Wizard.

  4. Cliquez sur Base de données, puis sur Suivant.Click Database, and then click Next.

  5. Si vous avez une connexion existante à la base de données AdventureWorksLT, choisissez cette connexion, puis cliquez sur suivant.If you have an existing connection to the AdventureWorksLT database, choose this connection and click Next.

    Sinon, cliquez sur Nouvelle connexionet utilisez la boîte de dialogue Ajouter une connexion pour créer la connexion.Otherwise, click New Connection, and use the Add Connection dialog box to create the new connection. Pour plus d’informations, consultez ajouter de nouvelles connexions.For more information, see Add new connections.

  6. Dans la page Enregistrer la chaîne de connexion dans le fichier de configuration de l’application , cliquez sur Suivant.In the Save the Connection String to the Application Configuration File page, click Next.

  7. Dans le choisir vos objets de base de données page, développez Tables et sélectionnez Product (SalesLT).In the Choose Your Database Objects page, expand Tables and select Product (SalesLT).

  8. Cliquez sur Terminer.Click Finish.

    Le fichier AdventureWorksLTDataSet.xsd est ajouté à la AdventureWorksDataSet projet.The AdventureWorksLTDataSet.xsd file is added to the AdventureWorksDataSet project. Ce fichier définit les éléments suivants :This file defines the following items:

    • Un dataset typé nommé AdventureWorksLTDataSet.A typed dataset named AdventureWorksLTDataSet. Ce jeu de données représente le contenu de la table Product dans la base de données AdventureWorksLT.This dataset represents the contents of the Product table in the AdventureWorksLT database.

    • Un TableAdapter nommé ProductTableAdapter.A TableAdapter named ProductTableAdapter. Ce TableAdapter peut être utilisé pour lire et écrire des données le AdventureWorksLTDataSet.This TableAdapter can be used to read and write data in the AdventureWorksLTDataSet. Pour plus d'informations, consultez TableAdapter Overview.For more information, see TableAdapter Overview.

      Vous utiliserez ces deux objets ultérieurement dans cette procédure pas à pas.You will use both of these objects later in this walkthrough.

  9. Dans l’Explorateur de solutions, avec le bouton droit AdventureWorksDataSet et cliquez sur Build.In Solution Explorer, right-click AdventureWorksDataSet and click Build.

    Vérifiez que le projet se génère sans erreur.Verify that the project builds without errors.

Création d'un projet de classeur ExcelCreating an Excel Workbook Project

Créer un projet de classeur Excel pour l’interface aux données.Create an Excel workbook project for the interface to the data. Plus loin dans cette procédure pas à pas, vous allez créer un ListObject qui affiche les données, et vous allez ajouter une instance du jeu de données dans le cache de données dans le classeur.Later in this walkthrough, you will create a ListObject that displays the data, and you will add an instance of the dataset to the data cache in the workbook.

Pour créer le projet de classeur ExcelTo create the Excel workbook project

  1. Dans l’Explorateur de solutions, avec le bouton droit le AdventureWorksDataSet solution, pointez sur ajouter, puis cliquez sur nouveau projet.In Solution Explorer, right-click the AdventureWorksDataSet solution, point to Add, and then click New Project.

  2. Dans le volet Modèles, développez Visual C# ou Visual Basic, puis développez Office.In the templates pane, expand Visual C# or Visual Basic, and then expand Office.

  3. Sous l’étendue Office nœud, sélectionnez le 2010 nœud.Under the expanded Office node, select the 2010 node.

  4. Dans la liste des modèles de projet, sélectionnez le projet de classeur Excel.In the list of project templates, select the Excel Workbook project.

  5. Dans le nom , tapez AdventureWorksReport.In the Name box, type AdventureWorksReport. Ne modifiez pas l’emplacement.Do not modify the location.

  6. Cliquez sur OK.Click OK.

    L' Assistant Projet Visual Studio Tools pour Office s'ouvre.The Visual Studio Tools for Office Project Wizard opens.

  7. Vérifiez que créer un nouveau document est sélectionné, puis cliquez sur OK.Ensure that Create a new document is selected, and click OK.

    Visual StudioVisual Studio Ouvre le AdventureWorksReport classeur dans le concepteur et ajoute le AdventureWorksReport projet l’Explorateur de solutions. opens the AdventureWorksReport workbook in the designer and adds the AdventureWorksReport project to Solution Explorer.

Ajout du jeu de données à des Sources de données dans le projet de classeur ExcelAdding the Dataset to Data Sources in the Excel Workbook Project

Avant de pouvoir afficher le jeu de données dans le classeur Excel, vous devez d’abord ajouter le jeu de données à des sources de données dans le projet de classeur Excel.Before you can display the dataset in the Excel workbook, you must first add the dataset to data sources in the Excel workbook project.

Pour ajouter le jeu de données aux sources de données dans le projet de classeur ExcelTo add the dataset to the data sources in the Excel workbook project

  1. Dans l’Explorateur de solutions, double-cliquez sur Sheet1.cs ou Sheet1.vb sous le AdventureWorksReport projet.In Solution Explorer, double-click Sheet1.cs or Sheet1.vb under the AdventureWorksReport project.

    Le classeur s’ouvre dans le concepteur.The workbook opens in the designer.

  2. Dans le menu Données , cliquez sur Ajouter une nouvelle source de données.On the Data menu, click Add New Data Source.

    Le Assistant de Configuration de Source de données s’ouvre.The Data Source Configuration Wizard opens.

  3. Cliquez sur objet, puis cliquez sur suivant.Click Object, and then click Next.

  4. Dans le sélectionnez l’objet que vous souhaitez lier à , cliquez sur ajouter une référence.In the Select the Object You Wish to Bind to page, click Add Reference.

  5. Sur le projets , cliquez sur AdventureWorksDataSet puis cliquez sur OK.On the Projects tab, click AdventureWorksDataSet and then click OK.

  6. Sous le AdventureWorksDataSet espace de noms de la AdventureWorksDataSet assembly, cliquez sur AdventureWorksLTDataSet puis cliquez sur terminer .Under the AdventureWorksDataSet namespace of the AdventureWorksDataSet assembly, click AdventureWorksLTDataSet and then click Finish.

    Le des Sources de données fenêtre s’ouvre, et AdventureWorksLTDataSet est ajouté à la liste des sources de données.The Data Sources window opens, and AdventureWorksLTDataSet is added to the list of data sources.

Création d’un contrôle ListObject lié à une Instance du jeu de donnéesCreating a ListObject That Is Bound to an Instance of the Dataset

Pour afficher le jeu de données dans le classeur, créez un ListObject qui est lié à une instance du jeu de données.To display the dataset in the workbook, create a ListObject that is bound to an instance of the dataset. Pour plus d’informations sur la liaison des contrôles aux données, consultez Binding Data to Controls in Office Solutions.For more information about binding controls to data, see Binding Data to Controls in Office Solutions.

Pour créer un ListObject lié à une instance du jeu de donnéesTo create a ListObject that is bound to an instance of the dataset

  1. Dans le des Sources de données fenêtre, développez le AdventureWorksLTDataSet nœud sous AdventureWorksDataSet.In the Data Sources window, expand the AdventureWorksLTDataSet node under AdventureWorksDataSet.

  2. Sélectionnez le produit nœud, cliquez sur la flèche déroulante qui s’affiche, sélectionnez ListObject dans la liste déroulante.Select the Product node, click the drop-down arrow that appears, and select ListObject in the drop-down list.

    Si la flèche de déroulement n’apparaît pas, vérifiez que le classeur est ouvert dans le concepteur.If the drop-down arrow does not appear, confirm that the workbook is open in the designer.

  3. Faites glisser le produit table à la cellule A1.Drag the Product table to cell A1.

    A ListObject contrôle nommé productListObject est créé sur la feuille de calcul, en commençant par la cellule A1.A ListObject control named productListObject is created on the worksheet, starting in cell A1. En même temps, un objet dataset nommé adventureWorksLTDataSet et un BindingSource nommé productBindingSource sont ajoutés au projet.At the same time, a dataset object named adventureWorksLTDataSet and a BindingSource named productBindingSource are added to the project. ListObject est lié à BindingSource, qui est lui-même lié à l’objet dataset.The ListObject is bound to the BindingSource, which in turn is bound to the dataset object.

Ajout du jeu de données dans le Cache de donnéesAdding the Dataset to the Data Cache

Pour permettre au code en dehors du projet de classeur Excel pour accéder au dataset dans le classeur, vous devez ajouter le jeu de données dans le cache de données.To enable code outside the Excel workbook project to access the dataset in the workbook, you must add the dataset to the data cache. Pour plus d’informations sur le cache de données, consultez mis en cache les données dans les personnalisations au niveau du Document et mise en cache des données.For more information about the data cache, see Cached Data in Document-Level Customizations and Caching Data.

Pour ajouter le jeu de données dans le cache de donnéesTo add the dataset to the data cache

  1. Dans le concepteur, cliquez sur adventureWorksLTDataSet.In the designer, click adventureWorksLTDataSet.

  2. Dans le propriétés , configurez la modificateurs propriété Public.In the Properties window, set the Modifiers property to Public.

  3. Définir le CacheInDocument propriété True.Set the CacheInDocument property to True.

L’initialisation du jeu de données dans le classeurInitializing the Dataset in the Workbook

Avant de pouvoir récupérer les données du DataSet mis en cache à l’aide de l’application console, vous devez remplir le dataset mis en cache avec les données.Before you can retrieve the data from the cached dataset by using the console application, you must first populate the cached dataset with data.

Pour initialiser le dataset dans le classeurTo initialize the dataset in the workbook

  1. Dans l’Explorateur de solutions, avec le bouton droit le Sheet1.cs ou Sheet1.vb de fichier et cliquez sur afficher le Code.In Solution Explorer, right-click the Sheet1.cs or Sheet1.vb file and click View Code.

  2. Remplacez le gestionnaire d'événements Sheet1_Startup par le code suivant.Replace the Sheet1_Startup event handler with the following code. Ce code utilise une instance de la ProductTableAdapter classe qui est définie dans le AdventureWorksDataSet projet pour remplir le dataset mis en cache de données, s’il est actuellement vide.This code uses an instance of the ProductTableAdapter class that is defined in the AdventureWorksDataSet project to fill the cached dataset with data, if it is currently empty.

    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);
        }
    }
    
    Private ProductTableAdapter As New  _
        AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter()
    
    Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
        If Me.NeedsFill("AdventureWorksLTDataSet") Then
            Me.ProductTableAdapter.Fill(Me.AdventureWorksLTDataSet.Product)
        End If
    End Sub
    

Point de contrôleCheckpoint

Générez et exécutez le projet de classeur Excel pour vous assurer qu’il se compile et s’exécute sans erreur.Build and run the Excel workbook project to ensure that it compiles and runs without errors. Cette opération remplit le dataset mis en cache également et enregistre les données dans le classeur.This operation also fills the cached dataset and saves the data in the workbook.

Pour générer et exécuter le projetTo build and run the project

  1. Dans l’Explorateur de solutions, avec le bouton droit le AdventureWorksReport de projet, choisissez déboguer, puis cliquez sur démarrer une nouvelle instance.In Solution Explorer, right-click the AdventureWorksReport project, choose Debug, and then click Start new instance.

    Le projet est généré et le classeur s’ouvre dans Excel.The project is built, and the workbook opens in Excel. Vérifiez ce qui suit :Verify the following:

    • Le ListObject remplit avec les données.The ListObject fills with data.

    • La valeur de la ListPrice colonne pour la première ligne de la ListObject est 1431.5.The value in the ListPrice column for the first row of the ListObject is 1431.5. Plus loin dans cette procédure pas à pas, vous utiliserez une application console pour modifier les valeurs dans le ListPrice colonne.Later in this walkthrough, you will use a console application to modify the values in the ListPrice column.

  2. Enregistrez le classeur.Save the workbook. Ne modifiez pas le nom de fichier ou l’emplacement du classeur.Do not modify the file name or the location of the workbook.

  3. Fermez Excel.Close Excel.

Création d’un projet d’Application ConsoleCreating a Console Application Project

Créez un projet d’application console à utiliser pour modifier des données dans le dataset mis en cache dans le classeur.Create a console application project to use to modify data in the cached dataset in the workbook.

Pour créer le projet d’application consoleTo create the console application project

  1. Dans l’Explorateur de solutions, avec le bouton droit le AdventureWorksDataSet solution, pointez sur ajouter, puis cliquez sur nouveau projet.In Solution Explorer, right-click the AdventureWorksDataSet solution, point to Add, and then click New Project.

  2. Dans le Types de projets volet, développez Visual C# ou Visual Basic, puis cliquez sur Windows.In the Project Types pane, expand Visual C# or Visual Basic, and then click Windows.

  3. Dans le modèles volet, sélectionnez Application Console.In the Templates pane, select Console Application.

  4. Dans le nom , tapez DataWriter.In the Name box, type DataWriter. Ne modifiez pas l’emplacement.Do not modify the location.

  5. Cliquez sur OK.Click OK.

    Visual StudioVisual Studio Ajoute le DataWriter projet l’Explorateur de solutions et ouvre le Program.cs ou Module1.vb fichier de code. adds the DataWriter project to Solution Explorer and opens the Program.cs or Module1.vb code file.

Modification des données dans le Dataset mis en cache à l’aide de l’Application ConsoleChanging Data in the Cached Dataset by Using the Console Application

Utilisez le ServerDocument classe dans l’application console pour lire les données dans un fichier local AdventureWorksLTDataSet de l’objet, modifier ces données, puis l’enregistrer dans le dataset mis en cache.Use the ServerDocument class in the console application to read the data into a local AdventureWorksLTDataSet object, modify this data, and then save it back to the cached dataset.

Pour modifier les données dans le dataset mis en cacheTo change data in the cached dataset

  1. Dans l’Explorateur de solutions, avec le bouton droit le DataWriter projet puis cliquez sur ajouter une référence.In Solution Explorer, right-click the DataWriter project and click Add Reference.

  2. Sur le .NET , sélectionnez Microsoft.VisualStudio.Tools.Applications.On the .NET tab, select Microsoft.VisualStudio.Tools.Applications.

  3. Cliquez sur OK.Click OK.

  4. Dans l’Explorateur de solutions, avec le bouton droit le DataWriter projet puis cliquez sur ajouter une référence.In Solution Explorer, right-click the DataWriter project and click Add Reference.

  5. Sur le projets onglet, sélectionnez AdventureWorksDataSet, puis cliquez sur OK.On the Projects tab, select AdventureWorksDataSet, and click OK.

  6. Ouvrez le fichier Program.cs ou Module1.vb dans l’éditeur de Code.Open the Program.cs or Module1.vb file in the Code Editor.

  7. Ajoutez le code suivant à l’aide de (pour c#) ou importations (pour Visual Basic) en haut du fichier de code.Add the following using (for C#) or Imports (for Visual Basic) statement to the top of the code file.

    using Microsoft.VisualStudio.Tools.Applications;
    
    Imports Microsoft.VisualStudio.Tools.Applications
    
  8. Ajoutez le code suivant à la méthode Main .Add the following code to the Main method. Ce code déclare les objets suivants :This code declares the following objects:

    • Une instance de la AdventureWorksLTDataSet type qui est défini dans le AdventureWorksDataSet projet.An instance of the AdventureWorksLTDataSet type that is defined in the AdventureWorksDataSet project.

    • Le chemin d’accès au classeur AdventureWorksReport dans le dossier de génération de la AdventureWorksReport projet.The path to the AdventureWorksReport workbook in the build folder of the AdventureWorksReport project.

    • A ServerDocument objet à utiliser pour accéder au cache de données dans le classeur.A ServerDocument object to use to access the data cache in the workbook.

      Note

      Le code suivant suppose que vous utilisez un classeur qui a l’extension de fichier .xlsx.The following code assumes that you are using a workbook that has the .xlsx file extension. Si le classeur dans votre projet a une extension de fichier différent, modifiez le chemin d’accès si nécessaire.If the workbook in your project has a different file extension, modify the path as necessary.

      AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet =
          new AdventureWorksDataSet.AdventureWorksLTDataSet();
      string workbookPath = System.Environment.GetFolderPath(
          Environment.SpecialFolder.MyDocuments) +
          @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
      ServerDocument serverDocument1 = null;
      
      Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
      Dim workbookPath As String = System.Environment.GetFolderPath( _
          Environment.SpecialFolder.MyDocuments) & _
          "\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"
      Dim serverDocument1 As ServerDocument = Nothing
      
  9. Ajoutez le code suivant à la Main (méthode), après le code que vous avez ajouté à l’étape précédente.Add the following code to the Main method, after the code you added in the previous step. Ce code exécute les tâches suivantes :This code performs the following tasks:

    • Elle utilise le CachedData propriété de la ServerDocument classe pour accéder au dataset mis en cache dans le classeur.It uses the CachedData property of the ServerDocument class to access the cached dataset in the workbook.

    • Il lit les données du DataSet mis en cache dans le jeu de données local.It reads the data from the cached dataset into the local dataset.

    • Il modifie la ListPrice valeur de chaque produit dans la table Product du jeu de données.It changes the ListPrice value of each product in the Product table of the dataset.

    • Il enregistre les modifications dans le dataset mis en cache dans le classeur.It saves the changes to the cached dataset in the workbook.

      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();
      }
      
      Try
          serverDocument1 = New ServerDocument(workbookPath)
          Dim dataHostItem1 As CachedDataHostItem = _
              serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1")
          Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet")
      
          If dataItem1 IsNot Nothing Then
              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.
              Dim schemaReader As New System.IO.StringReader(dataItem1.Schema)
              Dim xmlReader As 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.
              Dim row As AdventureWorksDataSet.AdventureWorksLTDataSet.ProductRow
              For Each row In productDataSet.Product.Rows
                  If row.ProductCategoryID < 20 Then
                      row.ListPrice = row.ListPrice + row.ListPrice * 0.1
                  Else
                      row.ListPrice = row.ListPrice - row.ListPrice * 0.1
                  End If
              Next row
      
              ' Write the modified local dataset to the worksheet dataset using the DiffGram format.
              Dim stringIn As New System.Text.StringBuilder()
              Dim stringOut As 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.")
          End If
      Catch ex As System.IO.FileNotFoundException
          Console.WriteLine("The specified workbook does not exist.")
      Catch ex As System.Xml.XmlException
          Console.WriteLine("The data object has invalid XML information.")
      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
      
  10. Dans l’Explorateur de solutions, avec le bouton droit le DataWriter de projet, pointez sur déboguer, puis cliquez sur démarrer une nouvelle instance.In Solution Explorer, right-click the DataWriter project, point to Debug, and then click Start new instance.

    L’application console affiche des messages pendant qu’il lit le dataset mis en cache dans le jeu de données local, modifie les prix des produits dans le jeu de données local et enregistre les nouvelles valeurs pour le dataset mis en cache.The console application displays messages while it reads the cached dataset into the local dataset, modifies the product prices in the local dataset, and saves the new values to the cached dataset. Appuyez sur ENTRÉE pour fermer l’application.Press ENTER to close the application.

Test du classeurTesting the Workbook

Lorsque vous ouvrez le classeur, la ListObject affiche maintenant les modifications apportées à la ListPrice colonne de données dans le dataset mis en cache.When you open the workbook, the ListObject now displays the changes you made to the ListPrice column of data in the cached dataset.

Pour tester le classeurTo test the workbook

  1. Fermez le classeur AdventureWorksReport dans le concepteur Visual Studio, s’il est toujours ouvert.Close the AdventureWorksReport workbook in the Visual Studio designer, if it is still open.

  2. Ouvrez le classeur AdventureWorksReport qui se trouve dans le dossier de génération de la AdventureWorksReport projet.Open the AdventureWorksReport workbook that is in the build folder of the AdventureWorksReport project. Par défaut, le dossier de génération est dans un des emplacements suivants :By default, the build folder is in one of the following locations:

    • %USERPROFILE%\My Documents\AdventureWorksReport\bin\Debug (pour Windows XP ou version antérieure)%UserProfile%\My Documents\AdventureWorksReport\bin\Debug (for Windows XP and earlier)

    • %USERPROFILE%\Documents\AdventureWorksReport\bin\Debug (pour Windows Vista)%UserProfile%\Documents\AdventureWorksReport\bin\Debug (for Windows Vista)

  3. Vérifiez que la valeur de la ListPrice colonne pour la première ligne de la ListObject est désormais 1574,65.Verify that the value in the ListPrice column for the first row of the ListObject is now 1574.65.

  4. Fermez le classeur.Close the workbook.

Voir aussiSee Also

Procédure pas à pas : Insertion de données dans un classeur sur un serveur Walkthrough: Inserting Data into a Workbook on a Server
Connexion à des données dans des applications Windows FormsConnecting to Data in Windows Forms Applications