Procédure pas à pas : insertion de données dans un classeur sur un serveur
Mise à jour : novembre 2007
S'applique à |
---|
Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés. Type de projet
Version de Microsoft Office
Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet. |
Cette procédure pas à pas montre comment insérer des données dans un groupe de données mis en cache dans un classeur Microsoft Office Excel sans démarrer Excel à l'aide de la classe ServerDocument. Elle contient des instructions pour utiliser l'exemple de code fourni dans Comment : insérer des données dans un classeur sur un serveur.
Cette procédure pas à pas décrit les tâches suivantes :
Définition d'un groupe de données qui contient des données de la base de données AdventureWorksLT pour Microsoft SQL Server 2005.
Création d'instances du groupe de données dans un projet de classeur Excel et un projet d'application console.
Création d'un ListObject lié au groupe de données dans le classeur.
Ajout du groupe de données du classeur au cache de données.
Insertion de données dans le groupe de données mis en cache en exécutant le code dans l'application console, sans démarrer Excel.
Bien que cette procédure pas à pas suppose que vous exécutez le code sur votre ordinateur de développement, le code présenté ici peut être mis en œuvre sur un serveur où Excel n'est pas installé.
Remarque : |
---|
Il se peut que votre ordinateur affiche des noms ou des emplacements différents pour certains éléments de l'interface utilisateur Visual Studio mentionnés dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio. |
Composants requis
Pour exécuter cette procédure pas à pas, vous devez :
Visual Studio Tools pour Office (un composant facultatif de Visual Studio 2008 Professional et Visual Studio Team System).
Visual Studio Tools pour Office est installé par défaut avec les versions répertoriées de Visual Studio. Pour vérifier s'il est installé, consultez Installation de Visual Studio Tools pour Office.
Excel 2007 ou Excel 2003.
Accès à une instance en cours d'exécution de SQL Server 2005 ou SQL Server 2005 Express à laquelle l'exemple de base de données AdventureWorksLT est attaché. Vous pouvez télécharger la base de données AdventureWorksLT à partir du site Web CodePlex. Pour plus d'informations sur la façon d'attacher une base de données, consultez les rubriques suivantes :
Pour attacher une base de données en utilisant SQL Server Management Studio ou SQL Server Management Studio Express, consultez Procédure : attacher une base de données (SQL Server Management Studio).
Pour attacher une base de données en utilisant la ligne de commande, consultez Procédure : attacher un fichier de base de données à SQL Server Express.
Création d'un projet de bibliothèque de classes définissant un groupe de données
Pour utiliser le même groupe de données dans un projet de classeur Excel et une application console, vous devez définir le groupe de données dans un assembly séparé référencé par ces deux projets. Pour cette procédure pas à pas, définissez le groupe de données dans un projet de bibliothèque de classes.
Pour créer le projet Bibliothèque de classes
Démarrez Visual Studio.
Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
Dans le volet Types de projets, développez Visual C# ou Visual Basic, puis cliquez sur Windows.
Dans le volet Modèles, sélectionnez Bibliothèque de classes.
Dans la zone Nom, tapez AdventureWorksDataSet.
Cliquez sur Parcourir pour accéder au dossier %UserProfile%\Mes documents (Windows XP ou version antérieure) ou %UserProfile%\Documents (Windows Vista), puis cliquez sur Sélectionner un dossier.
Dans la boîte de dialogue Nouveau projet, vérifiez que la case à cocher Créer le répertoire pour la solution n'est pas activée.
Cliquez sur OK.
Visual Studio ajoute le projet AdventureWorksDataSet à l'Explorateur de solutions et ouvre le fichier de code Class1.cs ou Class1.vb.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Class1.cs ou Class1.vb, puis sélectionnez Supprimer. Vous n'avez pas besoin de ce fichier pour cette procédure pas à pas.
Définition d'un groupe de données dans le projet de bibliothèque de classes
Définissez un groupe de données typé qui contient les données de la base de données AdventureWorksLT pour SQL Server 2005. À une étape ultérieure de cette procédure, vous référencerez ce groupe de données à partir d'un projet de classeur Excel et d'un projet d'application console.
Le groupe de données est un groupe de données typé qui représente les données de la table Product de la base de données AdventureWorksLT. Pour plus d'informations sur les groupes de données typés, consultez Vue d'ensemble des groupes de données dans Visual Studio.
Pour définir un groupe de données typé dans le projet de bibliothèque de classes
Dans l'Explorateur de solutions, cliquez sur le projet AdventureWorksDataSet.
Dans le menu Données, cliquez sur Ajouter une nouvelle source de données.
L'Assistant Configuration de source de données s'ouvre.
Cliquez sur Base de données, puis sur Suivant.
Si vous disposez d'une connexion active à la base de données AdventureWorksLT, choisissez cette connexion, puis cliquez sur Suivant.
Dans le cas contraire, cliquez sur Nouvelle connexion, puis utilisez la boîte de dialogue Ajouter une connexion pour créer la nouvelle connexion. Pour plus d'informations, consultez Comment : créer des connexions à des bases de données SQL Server.
Sur la page Save the Connection String to the Application Configuration File, cliquez sur Next.
Sur la page Choisir vos objets de base de données, développez le nœud Tables, puis sélectionnez Product (SalesLT).
Cliquez sur Terminer.
Le fichier AdventureWorksLTDataSet.xsd est ajouté au projet AdventureWorksDataSet. Ce fichier définit les éléments suivants :
Un groupe de données typé nommé AdventureWorksLTDataSet. Ce groupe de données représente le contenu de la table Product dans la base de données AdventureWorksLT.
Un TableAdapter nommé ProductTableAdapter. Cet élément TableAdapter peut être utilisé pour lire et écrire des données dans AdventureWorksLTDataSet. Pour plus d'informations, consultez Vue d'ensemble de TableAdapter.
Vous utiliserez ces deux objets plus loin dans cette procédure pas à pas.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur AdventureWorksDataSet, puis sélectionnez Générer.
Vérifiez que la génération du projet s'exécute correctement.
Création d'un projet de classeur Excel
Créez un projet de classeur Excel pour assurer l'interface avec les données. Plus loin dans cette procédure pas à pas, vous allez créer un objet ListObject qui affiche les données et vous allez ajouter une instance du groupe de données au cache de données du classeur.
Pour créer le projet de classeur Excel
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la solution AdventureWorksDataSet, pointez sur Ajouter, puis cliquez sur Nouveau projet.
Dans le volet Types de projets, développez Visual C# ou Visual Basic, puis Office.
Sélectionnez le dossier 2007 si vous utilisez Excel 2007 sur l'ordinateur de développement ou 2003 si vous utilisez Excel 2003.
Dans le volet Modèles, sélectionnez Classeur Excel.
Dans la zone Nom, tapez AdventureWorksReport. Ne modifiez pas l'emplacement.
Cliquez sur OK.
L'Assistant Projet Visual Studio Tools pour Office s'ouvre.
Assurez-vous d'avoir sélectionné Créer un nouveau document, puis cliquez sur OK.
Visual Studio ouvre le classeur AdventureWorksReport dans le concepteur et ajoute le projet AdventureWorksReport à l'Explorateur de solutions.
Ajout du groupe de données aux sources de données du projet de classeur Excel
Avant de pouvoir afficher le groupe de données dans le classeur Excel, vous devez l'ajouter aux sources de données du projet de classeur Excel.
Pour ajouter le groupe de données aux sources de données dans le projet de classeur Excel
Dans l'Explorateur de solutions, double-cliquez sur Sheet1.cs ou sur Sheet1.vb sous le projet AdventureWorksReport.
Le classeur s'ouvre dans le concepteur.
Dans le menu Données, cliquez sur Ajouter une nouvelle source de données.
L'Assistant Configuration de source de données s'ouvre.
Cliquez sur Objet, puis sur Suivant.
Sur la page Sélectionner l'objet que vous souhaitez lier, cliquez sur Ajouter une référence.
Sous l'onglet Projets, cliquez sur AdventureWorksDataSet, puis sur OK.
Sous l'espace de noms AdventureWorksDataSet de l'assembly AdventureWorksDataSet, cliquez sur AdventureWorksLTDataSet, puis sur Terminer.
La fenêtre Sources de données s'ouvre et AdventureWorksLTDataSet est ajouté à la liste des sources de données.
Création d'un ListObject lié à une instance du groupe de données
Pour afficher le groupe de données dans le classeur, créez un ListObject lié à une instance du groupe de données. Pour plus d'informations sur la liaison des contrôles aux données, consultez Liaison de données aux contrôles.
Pour créer un ListObject lié à une instance du groupe de données
Dans la fenêtre Sources de données, développez le nœud AdventureWorksLTDataSet, sous AdventureWorksDataSet.
Sélectionnez le nœud Product, cliquez sur la flèche de déroulement qui s'affiche et sélectionnez ListObject dans la liste déroulante.
Si la flèche de déroulement ne s'affiche pas, assurez-vous que le classeur est ouvert dans le concepteur.
Faites glisser la table Product vers la cellule A1.
Un contrôle ListObject nommé productListObject est créé dans la feuille de calcul, à partir de la cellule A1. Parallèlement, un objet DataSet nommé adventureWorksLTDataSet et un BindingSource nommé productBindingSource sont ajoutés au projet. ListObject est lié au BindingSource, qui est lui-même lié à l'objet Dataset.
Ajout du groupe de données au cache de données
Pour activer du code en dehors du projet de classeur Excel afin d'accéder au groupe de données du classeur, vous devez ajouter le groupe de données au cache de données. Pour plus d'informations sur le cache de données, consultez Modèle de données dans les personnalisations au niveau du document et Mise en cache des données.
Pour ajouter le groupe de données au cache de données
Dans le concepteur, cliquez sur adventureWorksLTDataSet.
Dans la fenêtre Propriétés, affectez à la propriété Modifiers la valeur Public.
Affectez à la propriété CacheInDocument la valeur True.
Point de contrôle
Générez et exécutez le projet de classeur Excel afin de garantir sa compilation et son exécution sans erreur.
Pour générer et exécuter le projet
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet AdventureWorksReport, sélectionnez Déboguer, puis Démarrer une nouvelle instance.
Le projet est généré et le classeur s'ouvre dans Excel. Le ListObject dans Sheet1 est vide, parce que l'objet adventureWorksLTDataSet du cache de données ne comporte pas encore de données. Dans la rubrique suivante, vous utiliserez une application console pour remplir l'objet adventureWorksLTDataSet de données.
Fermez Excel. N'enregistrez pas les modifications.
Création d'un projet d'application console
Créez un projet d'application console à utiliser pour insérer des données dans le groupe de données mis en cache dans le classeur.
Pour créer le projet d'application console
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la solution AdventureWorksDataSet, pointez sur Ajouter, puis cliquez sur Nouveau projet.
Dans le volet Types de projets, développez Visual C# ou Visual Basic, puis cliquez sur Windows.
Dans le volet Modèles, sélectionnez Application console.
Dans la zone Nom, tapez DataWriter. Ne modifiez pas l'emplacement.
Cliquez sur OK.
Visual Studio ajoute le projet DataWriter à l'Explorateur de solutions et ouvre le fichier de code Program.cs ou Module1.vb.
Ajout de données au groupe de données mis en cache à l'aide de l'application console
Utilisez la classe ServerDocument dans l'application console pour remplir de données le groupe mis en cache dans le classeur.
Pour ajouter des données au groupe de données mis en cache
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet DataWriter, puis sélectionnez Ajouter une référence.
Sous l'onglet .NET, sélectionnez l'un des assemblys suivants :
Si vous utilisez Excel 2007 sur l'ordinateur de développement, sélectionnez Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.
Si vous utilisez Excel 2003, sélectionnez Microsoft.VisualStudio.Tools.Applications.Runtime.
Ces assemblys définissent différentes versions de la classe ServerDocument qui sont utilisées par des projets pour la version 2007 de Microsoft Office system et Microsoft Office 2003. Pour plus d'informations, consultez Gestion de documents sur un serveur à l'aide de la classe ServerDocument.
Cliquez sur OK.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet DataWriter, puis sélectionnez Ajouter une référence.
Sous l'onglet Projets, sélectionnez AdventureWorksDataSet, puis cliquez sur OK.
Ouvrez le fichier Program.cs ou Module1.vb dans l'éditeur de code.
Ajoutez l'instruction suivante using (pour C#) ou Imports (pour Visual Basic) au début du fichier de code.
Imports Microsoft.VisualStudio.Tools.Applications
using Microsoft.VisualStudio.Tools.Applications;
Ajoutez le code suivant à la méthode Main. Ce code déclare les objets suivants :
Instances des types AdventureWorksLTDataSet et ProductTableAdapter définis dans le projet AdventureWorksDataSet
Chemin du classeur AdventureWorksReport dans le dossier build du projet AdventureWorksReport
Objet ServerDocument à utiliser pour accéder au cache de données du classeur
Remarque : Le code suivant suppose que vous utilisez un classeur Excel 2007 qui porte l'extension de fichier .xlsx. Si le classeur de votre projet possède une autre extension de fichier, modifiez le chemin d'accès de la manière appropriée.
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;
Ajoutez le code suivant à la méthode Main après le code inséré à l'étape précédente. Ce code exécute les tâches suivantes :
Il remplit l'objet de groupe de données typé en utilisant l'adaptateur de table.
Il utilise la propriété CachedData de la classe ServerDocument pour accéder au groupe de données mis en cache dans le classeur.
Il utilise la méthode SerializeDataInstance pour remplir le groupe de données mis en cache avec les données du groupe de données typé local.
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(); }
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet DataWriter, pointez sur Déboguer, puis sélectionnez Démarrer une nouvelle instance.
Le projet est généré, et l'application console affiche plusieurs messages d'état lorsque le groupe de données local est rempli et lorsque l'application enregistre les données dans le groupe de données mis en cache dans le classeur. Appuyez sur ENTRÉE pour fermer l'application.
Test du classeur
Lorsque vous ouvrez le classeur, ListObject affiche maintenant des données ajoutées au groupe de données mis en cache à l'aide de l'application console.
Pour tester le classeur
Fermez le classeur AdventureWorksReport dans le concepteur Visual Studio, s'il est toujours ouvert.
Dans l'Explorateur Windows, ouvrez le classeur AdventureWorksReport présent dans le dossier build du projet AdventureWorksReport. Par défaut, ce dossier se trouve à l'un des emplacements suivants :
%UserProfile%\Mes Documents\AdventureWorksReport\bin\Debug (pour Windows XP et antérieur)
%UserProfile%\Documents\AdventureWorksReport\bin\Debug (pour Windows Vista)
Vérifiez que ListObject est rempli de données après avoir ouvert le classeur.
Étapes suivantes
Pour en savoir plus sur l'utilisation de données mises en cache, consultez les rubriques ci-dessous :
Modification des données dans un groupe de données mis en cache sans démarrer Excel. Pour plus d'informations, consultez Procédure pas à pas : modification des données mises en cache dans un classeur sur un serveur.
Insertion de données dans le cache de données d'un document Word sous la forme d'un tableau d'octets en mémoire, au lieu de l'enregistrer sur un disque dur. Pour plus d'informations, consultez Comment : insérer des données dans des documents sans écrire sur le disque.
Voir aussi
Tâches
Comment : insérer des données dans un classeur sur un serveur
Procédure pas à pas : modification des données mises en cache dans un classeur sur un serveur
Comment : insérer des données dans des documents sans écrire sur le disque
Concepts
Vue d'ensemble de la connexion aux données dans Visual Studio