Présentation des fonctionnalités de serveur de Microsoft Visual Studio Tools pour Microsoft Office System version 2005

Découvrez comment créer, à l'aide de Microsoft Visual Studio Tools pour Microsoft Office System version 2005 Bêta 1, une solution serveur qui utilise Microsoft Office Word 2003 et Microsoft Office Excel 2003 sur le serveur. Cet article contient des liens vers des pages en anglais. (15 pages imprimées)

Lire l'article en anglais .

Remarque Cet article est une version préliminaire de la documentation et pourra faire l'objet de modifications dans les versions futures. Les outils Microsoft Visual Studio Tools pour Microsoft Office System version 2005 Bêta 1 sont inclus dans Microsoft Visual Studio, version 2005 Bêta 1.

Téléchargez ServerSample.msi.

Sur cette page

Introduction Introduction
Considérations architecturales en cas d'utilisation des fonctionnalités de données serveur Considérations architecturales en cas d'utilisation des fonctionnalités de données serveur
Aspects relatifs au déploiement et à la sécurité Aspects relatifs au déploiement et à la sécurité
Exemple de développement d'une solution Exemple de développement d'une solution
Sécurité du code Sécurité du code
Conclusion Conclusion
Ressources supplémentaires Ressources supplémentaires
À propos de l'auteur À propos de l'auteur

Introduction

Microsoft Office Word 2003 et Microsoft Office Excel 2003 proposent aux utilisateurs des fonctionnalités très puissantes. Les fonctions d'Excel pour gérer et manipuler de grandes matrices de données offrent une souplesse d'analyse considérable. Word est l'application idéale pour créer des contenus non structurés et mettre en place des scénarios basés sur des modèles. L'évolution des capacités d'automatisation de ces fonctions (d'abord les macros, puis Microsoft Visual Basic pour Applications (VBA) dans les documents et enfin l'accessibilité COM depuis l'extérieur du document) a permis d'implémenter de nouveaux scénarios de solutions. Dans bon nombre de ces scénarios, des données issues d'une ou plusieurs sources extérieures sont incorporées dans un document à certains endroits précis d'une structure ou d'un modèle prédéfini. Lorsque vous pensez aux données, notamment dans l'univers des applications Web, vous envisagez naturellement de déployer les fonctions requises dans un environnement serveur performant.

Jusqu'à ces derniers temps, l'utilisation d'applications Office sur le serveur, sans être impossible, n'était pas une tâche aisée. Les applications des éditions Microsoft Office 2003 sont conçues pour être interactives, ce qui rend leur configuration sur le serveur relativement délicate. Microsoft propose des conseils détaillés pour vous aider à résoudre ce problème (pour plus d'informations, reportez-vous à l'article de la Base de connaissances Microsoft INFO: Considerations for Server-Side Automation of Office), mais la procédure est encore loin d'être vraiment maîtrisée.

Avec Visual Studio Tools pour Office version 2005 Bêta 1, Microsoft facilite considérablement l'élaboration de scénarios serveur pour Office. La version 2005 s'attache particulièrement au chargement des données dans des documents et à leur extraction. Bien qu'il ne soit pas encore possible de disposer de toutes les fonctions d'automatisation des documents disponibles avec le modèle objet, cette nouvelle version constitue un premier pas logique vers des fonctionnalités serveur complètes.

Cet article décrit certains scénarios d'utilisation d'Office sur le serveur, dans un contexte d'entreprise. Il présente les considérations architecturales à prendre en compte lorsque vous créez une solution qui utilise Office sur le serveur. Enfin, il contient des extraits de code de la solution fournie en exemple pour illustrer un scénario possible d'utilisation des données dans Word et Excel et aborde plusieurs des nouvelles fonctionnalités de Visual Studio Tools pour Office version 2005 Bêta 1.

En examinant le code du fichier à télécharger et de la documentation annexe, vous apprendrez à :

  • ajouter du code dans un document Word et un classeur Excel afin de préparer la mise en cache des données sur le serveur ;

  • ouvrir un document serveur, obtenir des références avec les éléments mis en cache et mettre de nouvelles données en cache ;

  • utiliser plusieurs des nouvelles fonctionnalités de Visual Studio Tools pour Office version 2005 Bêta 1, notamment les contrôles d'affichage, le volet des actions de document et les contrôles de formulaire Microsoft Windows.

Scénarios de liaison de données

Les nouvelles capacités de liaison de données serveur offertes par Visual Studio Tools pour Office version 2005 Bêta 1 sont tout à fait adaptées aux impératifs propres à plusieurs catégories de solutions. Je vais les présenter ici en montrant les différences d'utilisation entre Word et Excel, mais uniquement dans le but de souligner les conditions d'application de ces fonctionnalités.

Solutions qui utilisent Word

Dans les solutions basées sur Word, nous utilisons habituellement un modèle donné, dont la structure est définie en fonction des besoins à satisfaire. Cette structure peut être orientée utilisateur (par exemple, tableaux et titres) ou utiliser les nouvelles fonctionnalités XML d'Office pour incorporer des données structurées dans un contenu utilisateur moins structuré. Dans les deux cas, nous pouvons recourir à la technique de liaison des données afin de préremplir des instances de modèle avec des données provenant d'autres sources. En outre, il est possible d'analyser l'état des données en vue de modifier l'interface utilisateur, par exemple pour modifier les contrôles visibles dans le volet Actions. Bien que cette fonctionnalité continue de s'exécuter sur le client, les données réelles sont ajoutées sur le serveur.

Par exemple, vous pouvez utiliser une solution Word pour préremplir un formulaire. Si ce formulaire attend à la fois des données non structurées et des données réutilisables, vous allez le personnaliser en fonction du contexte de la requête avant de le proposer à l'utilisateur. Ce scénario est applicable dans plusieurs secteurs verticaux qui font appel à des demandes d'informations structurées et personnalisées (par exemple, l'assurance, le conseil fiscal ou l'administration), des demandes de commentaires (hôtellerie, transports, événementiel) ou des documents d'enquête (marketing, publicité, études de marché).

Solutions qui utilisent Excel

Les solutions Excel sont généralement plus adaptées à l'analyse qu'à la création. Il existe de nombreuses solutions, prêtes à l'emploi ou personnalisées, orientées serveur ou client, qui essaient de résoudre la question relative à l'obtention de grandes quantités de données dans Excel. Avec les nouvelles fonctionnalités serveur de Visual Studio Tools pour Office version 2005 Bêta 1, les développeurs peuvent gérer bon nombre de difficultés et de risques inhérents à la technologie actuelle. De plus, grâce à la possibilité d'utiliser du code géré derrière le document au niveau du client et de fusionner les données de façon performante sur le serveur, de nouvelles options s'offrent à eux.

Par exemple, les entreprises utilisent fréquemment Excel pour les fonctions avancées de reporting et d'analyse des données aussi bien à partir de systèmes internes qu'externes. Ainsi, une solution Excel intégrant ces nouvelles fonctionnalités serveur peut vous permettre de présenter des rapports très ciblés et extrêmement performants tout en bénéficiant des capacités d'analyse d'Excel. Ce type de solution se révèle adapté aux secteurs verticaux qui ont besoin de solutions ciblées d'analyse marketing et des ventes, par exemple pour générer des rapports sur les ventes par produit (produits de grande consommation, alimentaires, pharmaceutiques) ou des états financiers dans certains secteurs d'activité.

Exemple de solution

La solution fournie en exemple dans le cadre de cet article présente un scénario complet qui utilise à la fois Word et Excel et qui exploite les nouvelles fonctionnalités serveur de Visual Studio Tools pour Office version 2005 Bêta 1.

Ce scénario part du principe que l'entreprise a besoin de générer des états des ventes et d'assurer un suivi de la relation clients. Northwind Trading, entreprise fictive commercialisant des produits alimentaires, donne à ses responsables marketing la possibilité de générer des rapports de ventes ciblés. À partir de ces rapports, ils définissent les prises de contact que doivent établir les agents commerciaux avec les clients. Le système facilite tous les aspects de cette communication en utilisant des données issues des systèmes de gestion des ventes et de gestion de la relation clients (CRM). Il génère des rapports de ventes spécifiques et préremplit les documents de prise de contact avec les clients, tout en offrant aux responsables et aux agents commerciaux un environnement applicatif client riche (Excel ou Word) dans lequel ils peuvent effectuer des analyses, ajouter du contenu et travailler plus rapidement et plus efficacement.

La solution comporte les étapes suivantes :

  1. Un responsable marketing affiche le site intranet de son entreprise et accède à une page dans laquelle il peut demander au système de générer les rapports les plus récents sur les ventes.

    .

    Figure 1. Vue Gestionnaire marketing

  2. Le système génère à la demande des rapports ciblés dans Excel, en fonction des différentes opérations de marketing et de ventes.

  3. Le responsable marketing visualise tous les rapports de ventes de l'année et en ouvre un. Le rapport Excel s'ouvre dans Microsoft Internet Explorer.

    Le responsable identifie le client auquel il souhaite accorder un traitement spécial. Il sélectionne une commande du client, puis clique sur Customer Discount Letter dans le menu Document Generation. Le système l'invite à entrer un message destiné à l'agent commercial, comme le montre la figure 2.

    Figure 2. Rapport Excel

  4. L'application Excel appelle un service Web qui crée une instance du modèle Word de prise de contact et ajoute les données du client.

  5. L'agent commercial chargé du client sélectionné accède au portail interne et voit une nouvelle demande de lettre de contact client (figure 3).

    Figure 3. Vue Agent commercial du client

  6. L'agent commercial ouvre le document (qui contient déjà des données) dans Word (figure 4). Il prend connaissance des commentaires du responsable marketing et fixe le montant de la remise. Il peut également ajouter ses propres commentaires. Une fois les modifications terminées, l'agent commercial demande au système de supprimer les données mises en cache, enregistre le document et l'envoie au client.

    Figure 4. Lettre au client

Le diagramme suivant décrit le déroulement du scénario :

Figure 5. Déroulement du scénario

Conditions requises : les composants à utiliser

Pour exécuter la solution, vous devez disposer des composants suivants :

  • Microsoft Office 2003 Editions (notamment, Microsoft Office Word 2003 et Microsoft Office Excel 2003), y compris .NET Programmability Support qui doit être installé après Microsoft .NET Framework

  • Microsoft Visual Studio 2005 Bêta 1 Refresh

  • Visual Basic .NET, y compris les projets Office

  • Microsoft Visual Web Developer

Installation de l'exemple de solution

Téléchargez le fichier MSI à partir du lien donné au début de l'article et installez-le. Pour plus d'informations sur l'installation, lisez le document Setting Up the VSTO Server Sample fourni avec le fichier MSI.

Remarque Il est conseillé d'installer l'exemple dans le répertoire par défaut. Si vous souhaitez l'installer dans un autre emplacement, assurez-vous que vous lisez les instructions supplémentaires relatives au scénario dans le document de configuration.

Considérations architecturales en cas d'utilisation des fonctionnalités de données serveur

La nécessité d'accéder à des ensembles volumineux de données à partir de systèmes hétérogènes a conditionné la mise au point de cette solution. En général, la création de connecteurs client vers ces systèmes, qu'ils soient basés sur SQL, sur des composants ou sur d'autres solutions, est problématique. La possibilité d'utiliser l'application cliente mais aussi de maintenir des performances élevées et une gestion évolutive des données dans un environnement serveur est idéale pour les scénarios que nous avons évoqués.

Lorsque vous envisagez d'utiliser les fonctionnalités de données serveur, vous devez examiner plusieurs points :

  • Devez-vous manipuler des ensembles volumineux de données avant de les incorporer dans le document ou le classeur ?

  • Avez-vous un environnement client verrouillé qui rend difficile le déploiement de connecteurs et autres composants nouveaux ?

  • Y a-t-il des mécanismes de connexion propriétaires vers vos systèmes d'arrière-guichet ?

  • Devez-vous faire des appels SQL directs pour obtenir des données ?

L'inconvénient de cette fonctionnalité est que toutes les manipulations visuelles et de liaison des données se déroulent sur le client. Bien que cette situation permette de répartir la charge des requêtes, elle exige plus de temps et de ressources lorsque l'utilisateur ouvre le document ou le classeur pour la première fois. Ceci est particulièrement vrai si dans votre scénario vous utilisez des données pour manipuler l'affichage (par exemple, pour ajouter des sections ou des feuilles de calcul). Si votre scénario est également soumis à des impératifs de performance, vous devez veiller à équilibrer le nombre de manipulations (données et affichage) effectuées à l'ouverture initiale du document.

Avantages de la solution .net Le principal avantage que procure l'accès aux données d'un document sans charger Excel ou Word est que vous pouvez, avec Microsoft .NET, générer du code serveur évolutif et performant et utiliser les mêmes fonctionnalités dans des solutions incluant aussi un composant client Word ou Excel. Il est ainsi possible de mettre en place des serveurs Web frontaux pour créer ou consulter des documents, sans que ces documents perdent leur disposition habituelle. Vous pouvez utiliser des objets DataSet génériques ou fortement typés. Vous pouvez utiliser les capacités de liaison de données .NET pour mapper des données DataSet sur les nouveaux contrôles en code géré pris en charge par Visual Studio Tools pour Office version 2005 Bêta 1.

Avantages de Visual Studio Tools pour Office Visual Studio Tools pour Office version 2003 a permis de prouver que l'utilisation de code géré lié à Office offrait aux développeurs de nombreuses options pour appliquer leurs connaissances et leurs propres approches de la plate-forme .NET, dans une solution utilisant par ailleurs la puissance de Word et d'Excel. Avec Visual Studio Tools pour Office version 2005, la prise en charge de la programmation .NET se trouve renforcée et l'expérience est intégrée dans le shell de Visual Studio. Cette nouvelle version inclut aussi des mécanismes permettant d'ajouter des fonctionnalités Office dans des applications d'entreprise autorisant l'intégration avec des fonctions client et serveur.

Aspects relatifs au déploiement et à la sécurité

Considérations relatives au client

La configuration de sécurité et de déploiement client de solutions Word et Excel qui incluent des données serveur obéit aux mêmes principes que tous les projets Visual Studio Tools pour Office version 2005 Bêta 1.

Du fait que la liaison des données et les autres modifications de l'interface utilisateur ont lieu sur le client, l'existence de gros volumes de données peut entraîner des problèmes de performance lorsqu'un utilisateur ouvre le document pour la première fois après la liaison des données serveur.

Recommandation : vous pouvez lier différentes feuilles de calcul de manière incrémentielle à mesure que l'utilisateur les active. Vérifiez si les données sont déjà liées (et enregistrées dans le fichier réel) de façon à limiter la duplication des opérations de liaison.

Considérations relatives au serveur

Le déploiement du composant serveur d'une solution Visual Studio Tools pour Office version 2005 Bêta 1 suit les principes .NET standard de configuration et de déploiement d'une application serveur. Cependant, vous devez tenir compte de certaines exigences spécifiques :

  • Accès aux modèles. Lorsque vous générez des documents à partir de modèles, le code serveur doit avoir un accès en lecture à l'emplacement contenant les modèles et un accès en écriture à l'emplacement de destination si les nouveaux documents sont générés sous la forme de fichiers.

    Recommandation : stockez les nouveaux documents dans Microsoft SQL Server. Ceci évite la nécessité d'un accès en écriture au système de fichiers et la génération d'un chemin d'accès pour charger les documents, et autorise les recherches en texte intégral.

  • Sécurité des données. Il arrive que vous utilisiez le document pour soumettre des données. Ces données sont accessibles dans le document à quiconque peut l'ouvrir. Ce peut être un problème si les données sont sensibles ou confidentielles, même si vous protégez le document avec un mot de passe.

    Recommandation : ne stockez pas des copies des documents soumis. Lorsque vous devez acheminer des documents, supprimez toutes les informations sensibles du document avant de l'envoyer.

  • Intégrité des modèles. Votre solution peut nécessiter l'utilisation de modèles qui sont basés sur des formats Office standard ; toutefois, un utilisateur non développeur risque d'introduire dans ces modèles des modifications qui les rendront inopérants.

    Recommandation : traitez les fichiers de modèle, qui font partie d'un projet Visual Studio Tools pour Office version 2005 Bêta 1, comme vous traiteriez d'autres ressources, aussi bien en termes de contrôle durant le développement que de sécurité durant le déploiement.

Exemple de développement d'une solution

Les opérations mises en œuvre pour générer l'exemple de solution sont les suivantes :

  • Création d'un projet Excel avec Visual Studio Tools pour Office version 2005 Bêta 1, destiné à contenir un rapport des ventes. Ajout d'îlots de données, d'une liste pour la liaison des données, de code de liaison des données et de menus personnalisés pour appeler le service Web qui génère la lettre au client.

  • Création d'un projet Word avec Visual Studio Tools pour Office version 2005 Bêta 1, destiné à contenir la lettre au client. Ajout d'îlots de données, d'un contrôle utilisateur personnalisé et de code permettant d'insérer le nouveau contrôle dans le volet Actions. Mappage du schéma XML sur la structure de document, ajout du code de liaison des données pour le XML et le contrôle utilisateur et ajout de gestionnaires d'événements permettant de définir la remise et d'effacer les données mises en cache.

  • Création d'une bibliothèque de classes partagées. Cette bibliothèque comprend une couche d'accès aux données qui utilise du XML objet DataSet stocké dans des fichiers afin d'éviter un accès SQL Server. Elle comporte aussi des appels à des composants afin de générer des instances liées aux données d'un classeur Excel (appelé par un fichier ASPX) et un document Word (appelé par un service Web).

  • Création d'un projet ASP.NET. Default.aspx appelle la méthode de génération de rapports et affiche les rapports disponibles une fois qu'ils sont générés. Letters.aspx répertorie les instances de modèles de lettre qui existent. Par ailleurs, un service Web est appelé depuis Excel pour invoquer la méthode de génération de la lettre au client.

Composants de la solution

Le diagramme suivant montre les différents composants de la solution.

Figure 6. Architecture de la solution

Configuration du code Word et Excel pour mettre les données en cache

La première étape pour créer un projet serveur Word ou Excel consiste à indiquer au compilateur les objets DataSet qui doivent être visibles dans le code côté serveur. Pour ce faire, vous pouvez ajouter l'attribut Cached() dans une variable de niveau membre qui est un objet DataSet ou qui en hérite.

Dans le projet Excel, un objet DataSet contient les données du rapport que le serveur ajoute. Le code suivant de la classe Sheet1 permet cet ajout.

<Cached()> Protected reportData As DataSet

Dans le projet Word, le code suivant qui se trouve dans la classe ThisDocument permet au serveur d'ajouter dans le document des informations spécifiques au client et à la commande, ainsi qu'un message du responsable marketing.

				<Cached()> Protected configData As DataSet
				<Cached()> Protected orderHeaderData As DataSet
				<Cached()> Protected orderLineItemData As DataSet
            

Liaison des données dans Word et Excel sur le serveur

Pour simplifier l'écriture du code ASP.NET et montrer que cette fonctionnalité est vraiment utilisable dans des solutions qui ont recours à des bibliothèques de classes ciblées pour une exécution sur le serveur, j'ai créé une classe simple afin de créer les instances préremplies des fichiers Word et Excel. Étant donné que vous pouvez utiliser la classe ServerDocument et ses classes associées pour Excel et pour Word, le code est pratiquement identique. La seule différence entre Word et Excel dans mon application est que Word a plusieurs objets DataSet alors que pour Excel, je crée plusieurs copies du classeur en vue de simuler la génération de rapports.

Remarque Pour éliminer la nécessité d'un accès SQL Server, la classe d'accès aux données lit le contenu de deux fichiers XML exportés à partir d'objets DataSet. Les données proviennent des tables Orders (Commandes) de la base de données NorthWind.

Les exemples suivants utilisent le code de la méthode GenerateCustomerLetter de la classe Report, qui génère de nouveaux exemplaires de la lettre au client et y incorpore les données associées à l'ID de commande sélectionné ainsi que le message du responsable marketing.

Configuration du projet de bibliothèque de classes

Pour utiliser les fonctionnalités de document serveur dans un projet, vous devez ajouter une référence à l'assembly Microsoft.VisualStudio.OfficeTools.Interop.Runtime. Cet assembly s'installe, en même temps que Visual Studio Tools pour Microsoft Office System version 2005 Bêta 1, lorsque vous installez Visual Studio 2005 Bêta 1.

Chargement du document serveur

La fonctionnalité de document serveur s'appuie sur les enregistrements personnalisés ajoutés dans le classeur Excel ou le fichier binaire du document Word. La classe ServerDocument lit le fichier cible et vous donne accès aux données mises en cache qu'il contient.

ServerDocumentpropose pusieurs constructeurs, permettant par exemple une initialisation à partir d'un chemin, d'un tableau d'octets ou d'un flux. J'ai choisi d'utiliser le constructeur qui prend le chemin d'accès comme paramètre, en faisant une nouvelle copie du modèle (situé au niveau du chemin d'accès dans ma variable destinationPath) puis en instanciant le document serveur à partir du chemin d'accès au fichier copié (voir le code ci-dessous) :

Dim serverReport As ServerDocument = New ServerDocument(destinationPath)

Maintenant que j'ai une référence active au document, je peux accéder aux données mises en cache.

Accès aux données mises en cache

Dans l'objet ServerDocument, les données mises en cache sont divisées en vues qui contiennent des éléments. Les types CachedDataView et CachedDataItem représentent ces objets. Vous appelez une vue ou un élément par son nom, lequel est conforme aux conventions suivantes :

Vues Word. Espace de nom complet y compris ThisDocument. Par exemple : VSTOServerSample.ThisDocument.

Vues Excel. Espace de nom complet y compris ThisWorkbook ou le nom de la classe WorkSheet qui contient le code. Par exemple : VSTOServerSample.Sheet1.

Éléments Word et Excel. Le nom de la variable déclarée avec l'attribut Cached(). Par exemple : orderHeaderData à partir de <Cached()> Protected orderHeaderData As DataSet

Dans l'exemple d'application serveur, j'ai configuré des variables pour la vue et les trois éléments auxquels j'ai besoin d'accéder :

				Dim viewName As String = "VSTOServerSample.ThisDocument"
				Dim itemNameHeader As String = "orderHeaderData"
				Dim itemNameLineItem As String = "orderLineItemData"
				Dim itemNameConfig As String = "configData"
            

À présent je peux accéder aux éléments réels du document et les mettre à jour avec les données que je souhaite ajouter. Tout d'abord, j'obtiens la référence à la vue souhaitée en utilisant l'élément CachedDataManifest de l'objet ServerDocument :

cachedView = serverReport.CachedDataManifest.Views(viewName)

Puis j'utilise l'instance CachedDataView pour accéder aux éléments CachedDataItems dont j'ai besoin :

	    	cachedItemHeader = cachedView.CachedData(itemNameHeader)
            cachedItemLineItem = cachedView.CachedData(itemNameLineItem)
            cachedItemConfig = cachedView.CachedData(itemNameConfig)
	    	

Mise à jour des données et enregistrement du document

À présent, je peux utiliser les références d'éléments pour les mettre à jour en fonction des nouvelles données. J'utilise deux objets DataSet qui sont déjà remplis et j'en obtiens un troisième à partir de ma classe EmbeddedConfiguration, qui utilise un DataSet comme stockage interne :

	    	cachedItemHeader.SerializeDataInstance(dsOrderHeader)
			cachedItemLineItem.SerializeDataInstance(dsOrderLineItem)
			'get config data
			Dim config As New EmbeddedConfiguration
			config.Message = messageToRep
			cachedItemConfig.SerializeDataInstance(config.DataToCache)
	    	

Il me reste à sauvegarder et à fermer l'objet ServerDocument :

serverReport.Save()
serverReport.Close()

J'ai maintenant une nouvelle copie de la partie document du projet, contenant des données avec lesquelles le code peut faire la liaison au moment de l'ouverture dans Word. Ainsi, en quelques lignes de code, j'ai préparé un projet Excel et Word pour un accès serveur et écrit des routines qui lient des nouvelles données à ces documents et qui peuvent s'exécuter sur le serveur sans qu'il soit nécessaire de charger l'application Word ou Excel.

Possibilités supplémentaires de l'objet ServerDocument

Si vous avez une instance valide d'un objet ServerDocument, vous pouvez lancer une itération sur la vue et les collections d'éléments dans CachedDataManifest :

	    	For Each cachedView As CachedDataView In _ 
			serverDocumentInstance.CachedDataManifest.Views
			For Each cachedItem As CachedDataItem In cachedView.CachedData
				'Do some work with the CachedDataItem
			Next
			Next
	    	

Si vous avez une instance d'un objet CachedDataItem et si vous voulez lire les données dans un objet DataSet, lisez le schéma et le XML de l'élément dans un nouvel objet DataSet : FakePre-3e5fa09408124358a34ba04d6c74ce53-accbc6cd7ef14a84b9996cd5bf980622 Création du modèle Excel

Configuration de la feuille de calcul

La feuille de calcul qui affiche le rapport doit présenter une certaine mise en forme et un contrôle Liste pour la liaison des données. La classe Sheet1 inclut aussi le code requis pour créer et supprimer un menu personnalisé.

Remarque L'automatisation du menu personnalisé ne fonctionne pas de manière cohérente quand Excel est chargé dans Internet Explorer. J'ai inclus dans la feuille de calcul un bouton qui s'affiche en cas de chargement dans le navigateur, si le menu échoue. Le menu se charge si le document est ouvert directement depuis le système de fichiers. La figure 7 montre la feuille de calcul entièrement configurée.

Figure 7. Feuille de calcul entièrement configurée dans Visual Studio

Liaison avec l'objet Liste

L'objet ListObject est un nouveau contrôle d'affichage qui inclut la liste Excel. Ceci nous permet de lier facilement les données à la liste :

	    	If (Not reportData Is Nothing) Then
			listReport.DataSource = reportData.Tables(0)
			Else
			listReport.DataSource = Nothing
			End If
			listReport.Refresh()
	    	

Appel du service Web pour générer la lettre au client

La méthode privée generateLetter de la classe Sheet1 vérifie si une ligne valide est sélectionnée dans la liste, obtient la valeur de l'ID de commande, invite l'utilisateur à saisir un message pour l'agent commercial et appelle le service Web des lettres au client.

Création du modèle Word

Configuration du document

Le projet de document inclut des éléments de mise en forme, une partie du contenu du modèle et des mappages vers des nœuds XML à partir d'un schéma référencé. La classe ThisDocument ajoute le nom de l'utilisateur actuel dans la zone de signature du document, incorpore le contrôle utilisateur OrderInfo dans le volet Actions, relie les données ajoutées sur le serveur aux nœuds XML et gère les événements provenant du contrôle utilisateur. Le projet inclut aussi le contrôle utilisateur et un formulaire pour afficher les détails de la commande dans un objet DataGridView.

Figure 8. Document entièrement configuré dans Visual Studion

Contrôle utilisateur pour le volet Actions de document

Ce contrôle utilisateur personnalisé affiche certaines données de la requête, notamment le commentaire saisi par le responsable marketing lorsqu'il a généré la lettre. Il permet également à l'agent commercial de définir le montant de la remise, ce qui met à jour le document. L'agent commercial peut aussi effacer du document les données mises en cache, permettant ainsi à d'autres utilisateurs de l'ouvrir sans risquer de modifier le contenu.

La figure 9 montre la disposition du contrôle utilisateur.

Figure 9. Contrôle utilisateur dans le volet Actions

Liaison de données avec des nœuds XML à l'aide des contrôles Word XML En préparant le document, j'ai mappé les éléments du schéma XML sur le contenu du document. Visual Studio ajoute une instance de la classe Microsoft.Office.Word.Tools.Word.XMLNodes pour chaque rôle mappé. Ceci vous permet de définir des données directement au niveau du nœud, sans avoir à parcourir le schéma complet.

Remarque Visual Studio Tools pour Office version 2005 ajoute des références à ces nœuds XML dans la classe partielle associée à ThisDocument. Les classes partielles sont une nouvelle fonctionnalité introduite dans Visual Studio 2005.

Lorsque le document est chargé, je lis les données ajoutées sur le serveur et je définis les valeurs dans les objets de nœud adéquats. Le code suivant montre le nœud d'ID de commande défini avec la valeur correcte à partir de l'objet DataSet :

            Table1OrderIDNodes.Item(1).Text = orderHeaderRow("OrderID").ToString()
            

Effacement du cache de données Lorsque l'utilisateur clique sur Clear Cached Data, j'initialise les objets DataSet, je sauvegarde le document et je supprime le contrôle du volet d'actions. Cette opération, combinée avec une configuration de protection du document ou de gestion des droits d'accès, évite que le contenu ne soit modifié. Le code qui efface les données du document ressemble à celui-ci :

orderHeaderData = Nothing
orderLineItemData = Nothing
configData = Nothing
Me.Save()
MessageBox.Show("All cached data has been cleared from the document.")
Me.ActionsPane.Controls.Remove(controlContext)

Intranet ASP.NET

Et maintenant, l'assemblage

Le projet Web ASP.NET comporte deux pages simples qui présentent les rapports et les lettres disponibles. La page Default.aspx permet aussi à l'utilisateur de créer des fichiers de rapport Excel. Letters.aspx affiche une liste des lettres au client disponibles.

Sécurité du code

Le code évoqué dans cet article n'est fourni qu'à titre d'exemple et vous ne devez pas l'utiliser dans des solutions déployées sans effectuer des modifications. En particulier, vous devez tenir compte de la sécurité du code.

Pour illustrer la simplicité de cette application, une liste des menaces possibles a été établie à l'aide du processus de modélisation des menaces et des outils décrits dans l'article Modélisation de la menace de la section Sécurité du site Microsoft Technet.

Les exemples suivants signalent quelques menaces identifiées que vous devez prendre en considération avant de développer ou de déployer cette solution :

Effet de la menace

Point d'entrée

Solution connue

Les fichiers de données XML sont compromis et contiennent des données incorrectes.

Fichiers de données XML

Marquer les fichiers de données XML en lecture seule.

Le service Web est usurpé et le comportement de l'application est modifié.

Service Web ASP.NET

Contrôler les entrées DNS et le mappage serveur.

Pour plus d'informations sur la sécurité du code, reportez-vous au Centre des ressources Sécurité pour les développeurs sur MSDN.

Conclusion

Dans cet article, j'ai tenté de présenter les nouvelles et puissantes fonctionnalités serveur de Visual Studio Tools pour Office version 2005 Bêta 1. Les scénarios et les considérations relatives à l'architecture vous donnent un aperçu de leur utilisation possible dans les solutions que vous devez développer. L'exemple de solution proposé indique les principaux composants que vous devez générer. Cet exemple utilise aussi certaines fonctionnalités client pour le développement de solutions Word et Excel.

Ressources supplémentaires

Visual Studio Tools pour Office version 2005

Sécurité du code

À propos de l'auteur

Matt Hessinger travaille au développement Office depuis 1997 et utilisait déjà .NET avant son lancement en 2002. Au cours des dernières années, il a construit et développé des solutions serveur qui utilisent Word, Excel et Microsoft Office PowerPoint. Actuellement, il aide les clients dans la mise en place de solutions .NET, qui incluent désormais Office comme composant de choix tant sur le serveur que sur les clients.