1
Génération de documents Office côté serveur avec Open XML et VSTO
Julien Chablehttp://blogs.developpeur.org/neodante Consultant / DéveloppeurWygwam
Code Session : POS206
Sébastien Bovohttp://blogs.msdn.com/sbovo/Apps Development ConsultantMicrosoft
3
Agenda
Développement Office client avec VSTORuban OfficeVolet d’actions et de taches OfficeWord Content Controls
Le format Open XML, de la théorie …… à la pratique avec le SDK Open XML v2Les outilsSynthèseQ&A
4
VSTO pourquoi faire ?
Aider les développeurs à facilement intégrer leur logique métier dans Microsoft Office
Développement d’Office Business ApplicationsBénéficier d’une ergonomie et d’une interface connues des utilisateursPermettre la création d’applications riches
SécuriséesFacilement déployables et maintenablesRapides à développer
5
VSTO qu’est ce que c’est ?
Visual Studio Tools for Office= Socle technologique pour implémenter le
concept OBA à travers
Gère la « plomberie » et l’intégration dans les applications
Word ExcelPowerPoint OutlookVisio ProjectInfoPath SharePoint
6
Les Add-Ins VSTO
Structure de code permettant le développement des solutions Office :
AddIn Applicatif AddIn Applicatif : Associé à l’application Office : Associé à l’application Office (disponible pour tous les documents)(disponible pour tous les documents)AddIn Document AddIn Document : Associé à un document, Classeur : Associé à un document, Classeur Excel ou modèle de documentExcel ou modèle de document
Permet l’intégration dans OfficePermet l’intégration dans OfficeAccès au modèle objet de l’application cibleAccès au modèle objet de l’application cibleGère le chargement/déchargementGère le chargement/déchargement
7
Personnalisation du ruban Office
Nouveauté de l’interface Office 2007Nouveauté de l’interface Office 2007Remplace les menus et sous menusRemplace les menus et sous menusDonne un accès direct aux fonctionnalités en les Donne un accès direct aux fonctionnalités en les regroupant par thème regroupant par thème Extensible au niveau application & document pour Extensible au niveau application & document pour Word, Excel, Outlook & PowerPointWord, Excel, Outlook & PowerPoint
8
Personnalisation du ruban Office
Visual Studio 2008 fournit un DesignerAjouter des onglets / groupes et contrôlesModifier les propriétés et les comportements
10
Volet d’actions ou de taches
ActionsPaneAssocié à un document Word ou ExcelAccessible dès l’ouverture du documentFournit des actions propres au document
CustomTaskPane :Associé à une application OfficeDisponible durant la durée de vie du processusFournit des actions pour tous les documents
11
Word Content Controls
Disponible pour Word 2007 au niveau document Définir des zones de contenu de données spécifiques pour structurer vos documents
En contrôlant l’interaction de l’utilisateurEn protégeant des sections de documents de toutes modifications
Liaison des contrôles aux données sur le modèle des Windows Forms (Objets managés ou source de données)Complètement intégré à Visual Studio
14
Le format Office Open XMLVue de Vue de l’utilsateurl’utilsateur
MonDoc.docxMonDoc.docx
Vue du développeur : un fichier Vue du développeur : un fichier zip avec des parties XMLzip avec des parties XML
Propriétés du documentPropriétés du document
Fichier conteneurFichier conteneur
CommentairesCommentaires
WordML/SpreadsheetML, etc.WordML/SpreadsheetML, etc.
XML personnaliséXML personnalisé
Images, video,s sonsImages, video,s sons
StylesStyles
GraphiquesGraphiques
15
Un SDK Open XML pourquoi faire ?
Permet aux développeurs d’accéder aux documents sans nécessiter Office Automation
Les outils actuels des développeurs Open XMLWinZip, MSXML, et Notepad System.IO.Packaging, System.XML, et LINQ
Le futur des développements Open XMLOpen XML SDK v1 et v2
17
Un SDK Open XML pourquoi faire ?
Créer des solutions pour des documents Office… sur le client et le serveur… à la hauteur de la tâche (sans Office Automation)
Le modèle objet n’a pas été conçu pour des scénarii serveurNe convient pas en terme charge
Essayer de manipuler 100 documents
Les boîtes de dialogue “stop” l’automationPratique : les clients reboot l’application toutes les X heures
19
Un SDK Open XML pourquoi faire ?
Remplacer Office Automation (enfin ?)Des avantages :
SécuritéPerformance (multithread/multicore/réparti) ~100+ rapide !StabilitéMontée en chargeEtc
Apporter une API et des outils d’aide aux développeurs
20
Le SDK Office Open XML
Le SDK Open XML permet un accès aux parties et au contenu des documentsRapide (… vraiment très rapide)Fonctionne en environnement client ou serveur
Même sous SharePoint
Aucun besoin d’Office pour manipuler des documents OfficeSupporte la programmation LinqSupporte actuellement ECMA 376
21
Formatage du contenu
Forcer les standard de formatage des Forcer les standard de formatage des organisations :organisations :
Open XMLProcessing
22
Inspection du contenuExemple 1 :Exemple 1 : supression des informations supression des informations
confidentielles, de suivi des modifications ou les confidentielles, de suivi des modifications ou les métadonnées des documents sortants.métadonnées des documents sortants.
Open XMLProcessing
Exemple 2 : suppression des macros ou de contenu pouvant porter atteinte des documents entrants.
Open XMLProcessing
23
Consommer des documents
Les utilisateurs créent des rapports dans un tableur, Les utilisateurs créent des rapports dans un tableur, qui seront ensuite chargé dans des applications qui seront ensuite chargé dans des applications serveur.serveur.
Système back-end(LOB/CRM/etc.)
Traitement Open XML
Environnement d’édition(Microsoft Office, etc.)
24
Assemblage de documents
Exemple :Exemple : création de document de prévision création de document de prévision depuis les données stockées dans un CRM.depuis les données stockées dans un CRM.
Client riche ou webpermettant aux utilisateurs de saisir oude sélectionner des critères. Traitement
Open XML
25
Utilisation du Custom XML
Exemple :Exemple : marquer le contenu d’un document marquer le contenu d’un document avec une sémantique personnalisée pour avec une sémantique personnalisée pour traitement dans un système serveur.traitement dans un système serveur.
Environnement d’édition
Traitement Open XML
27
Le SDK Open XML v1
• Typage des classes des parties• Le SDK v1 permet de manipuler les parties uniquement
(surcouche de System.IO.Packaging)• Disponibilité du Open XML SDK :
• La version 1 est disponible aujourd’hui en Go Live• Espace de nom
Microsoft.Office.DocumentFormat.OpenXml.Packaging
28
Le SDK Open XML v2
• Utilisation de System.IO.Packaging• Le SDK v2 permet de manipuler le contenu• Disponibilité du Open XML SDK en Community Preview
• Devrait être disponible en même temps que “Office 14”• Espace de nom DocumentFormat.Open Xml
29
Génération d’un document Word
usi ng (Wordprocessi ngDocument package = Wordprocessi ngDocument . Create(docName, Wordprocessi ngDocument Type. Document ) ){
/ / Aj outer une par t i e de contenu au document package. AddMai nDocument Par t ( ) ;/ / Créer l e contenu de vot re document
package. Mai nDocument Par t . Document = new Document ( new Body( new Paragraph(
new Run( new Text ( " Bonj our à tous! " ) ) ) ) ) ;
/ / Enregi st rer l e contenu dans l e document package. Mai nDocument Par t . Document . Save( ) ;
}
31
Architecture SDK Open XML
System Support
.Net 3.5 System.IO.PackagingOpen XML Schemas
Open XML File Format Base Level
Reading/Writing Low Level DOM Packaging API
Open XML File Format Higher Level
Schema Level Validation
Semantic Level Validation
Helper Functions
32
Le SDK Open XML n’est pas …
… un remplacement du modèle objet d’Office (VBA ou VSTO),… une aide absolue. Vous manipulez le format Open XML, vous devrez connaître celui-ci,… un convertisseur de formats (Open XML vers HTML, XPS vers Open XML, etc),… capable de valider un document si vous modifiez vous-même le XML des parties sans passer par le modèle objet du SDK,… n’est pas une boîte à outils fonctionnels.
36
Document Reflector – SDK v2
Outil pour débutants et expertsGénération du code C# utilisant le SDK Open XML à partie d’un document
38
VSTO PowerTools
Ouvre et édite les documents Open XML dans Visual Studio
http://www.microsoft.com/downloads/details.aspx?FamilyID=46B6BF86-E35D-4870-B214-4D7B72B02BF9
39
Open XML Viewer
Convertisseur Open XML HTMLProjet Open Source disponible sur Codeplex:
http://www.codeplex.com/OpenXMLViewer
40
B2XConverter
Convertisseur binaires (Word, Excel, PPt) Open XMLGuide de conversionMigration massive de documentsDisponible sur sourceforge :http://b2xtranslator.sourceforge.net/
41
PowerTools Open XML
Un ensemble de +30 cmdlets pour créer ou modifier les documents Open XML
Suppression des commentaires, acceptation des révisions, etc.
Supporte les “pipes” de PowerShellConstruit sur base du Open XML SDK v1Disponible sur CodePlex sous licence Ms-PL www.codeplex.com/PowerTools
Les IT et les développeurs peuvent créer des scripts batch en utilisant PowerTools
45
Synthèse
VSTO permet de créer des solutions côté client en profitant des avantages de la suite OfficeOffice Open XML est un standard ouvert ISOLe SDK Open XML v2 est une abstraction quasi complète du format Office Open XMLLe format Open XML permet de créer des documents Office côté serveur sans OfficeAujourd’hui, une pléthore d’outils, de SDKs sur tous les environnements et toutes les plateformes
46
Références
Centre de développement VSTO : http://msdn.microsoft.com/fr-fr/vsto/default(en-us).aspx
Téléchargement du SDK Open XML v1 : http://go.microsoft.com/fwlink/?LinkId=120908
Téléchargement du SDK Open XML v2 : http://go.microsoft.com/fwlink/?LinkId=127912
Site Connect du SDK : https://connect.microsoft.com/site/sitehome.aspx?SiteID=589
OpenXML Developers : www.openxmldevelopers.com Blog Julien Chable dédié à Open XML : http://blogs.developpeur.org/neodante/
48
Génération de documents Office côté serveur avec OpenXML et VSTO
Julien Chablehttp://blogs.developpeur.org/neodante Consultant / DéveloppeurWygwam
Code Session : POS206
Sébastien Bovohttp://blogs.msdn.com/sbovo/Apps Development ConsultantMicrosoft
49
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Votre potentiel, notre passion TM