« Les Mercredis du développement » Nouveau format de fichier Template Solution Présenté par Pierre Lagarde Relation Développeurs Microsoft France Level 200
Nouveau format de fichier Office "12" IntroductionArchitectureAvantages Scénario de développement Template Office "12" Customisation de linterface utilisateur Données XML dans les documents Agenda
Evolution des formats Office 2000 Innovation Propriétés du document sauvegardé en XML Office 97 Nouveau format binaire (celui daujourdhui) Office XP Premier format XML Feuille de calcul Excel Office 2003 Support du format XML WordML, ExcelML Schéma métier Office 12 Nouveaux formats XML Format XML par défaut Word, Excel, Powerpoint 12
Manipuler les documents office aujourdhui Office 2000/XP Par automation en utilisant le model objet COM Scénario server, installer Office sur le serveur Pas supporté Problème de performance Problème de montée en charge Office 2003 Meilleur support des scénarii serveur WordML et ExcelML Mise à disposition dun « Data Island » manipulable via des class de VSTO Nécessite la connaissance des schémas XML Office 2003 Nécessite parfois des transformations XSLT
Microsoft Office Open XML File Formats Macro-FreeMacro-Enabled DocumentTemplateDocumentTemplate docxdotxdocmdotm pptxpotxpptmpotm xlsxxltxxlsmxltm Open Packaging Convention
Compatibilité Office "12" Support des formats Office binaire Possibilité de changer le type de sauvegarde par défaut Continuité dans le format XML dOffice 2003 et XP Office 2000, Office XP, Office 2003 supporteront le nouveau format Patch disponible au lancement dOffice "12" Ouverture, Edition et Sauvegarde
Office Open XML Architecture Questionnaire. docx Vu Utilisateur: Un seul fichier
Office Open XML Architecture Questionnaire. docx Vu Utilisateur: Un seul fichier Vu développeur: fichier zip Questionnaire. docx
Office Open XML Architecture Questionnaire. docx Questionnaire. docx Package Vu Utilisateur: Un seul fichier Vu développeur: fichier zip
Office Open XML Architecture Questionnaire. docx Questionnaire. docx Package [Content Types].xml Vu Utilisateur: Un seul fichier Vu développeur: fichier zip
Office Open XML Architecture Questionnaire. docx Questionnaire. docx Package Document Parts word / xl / ppt [Content Types].xml Vu Utilisateur: Un seul fichier Vu développeur: fichier zip
Office Open XML Architecture Questionnaire. docx Questionnaire. docx Package Document, Application, Custom Document Properties docProps Document Parts word / xl / ppt [Content Types].xml Vu Utilisateur: Un seul fichier Vu développeur: fichier zip
Office Open XML Architecture Questionnaire. docx Questionnaire. docx Package Relationships _rels Document, Application, Custom Document Properties docProps Document Parts word / xl / ppt [Content Types].xml Vu Utilisateur: Un seul fichier Vu développeur: fichier zip
Office Open XML Architecture Questionnaire. docx Questionnaire. docx Package Relationships _rels Document, Application, Custom Document Properties docProps Document Parts word / xl / ppt [Content Types].xml Custom Defined XML, Macros, … custom fld Vu Utilisateur: Un seul fichier Vu développeur: fichier zip
Nouveau format de fichier demo demo
Scénario Développeur Créer des solutions de lecture, écriture modification sur les fichiers Office sans passer par lAPI Office Utilisation des API WinFX Ouverture du fichier Open XML Office Maintien des « Part » et des « Relations » dans le fichier Programmation XML XPath – Navigation dans le contenu XML DOM – Manipulation du contenu
API WinFx Microsoft WinFX Software Development Kit (SDK CTP Janvier) System.IO.Packaging namespace Ajouter des Part, Mise à jour du contenu, Créer des nouvelles relations Importer les Classes Package,PackagePart,PackageRelationship
System.IO.Packaging using (Package package = Package.Open(packagePath, FileMode.Open,FileAccess.ReadWrite)) { Uri uriPartTarget = new Uri("/word/styles1.xml", UriKind.Relative); PackagePart newPackagePart = package.CreatePart(uriPartTarget, "application/vnd.ms-word.styles+xml"); using (FileStream fileStream = new FileStream(stylePath, FileMode.Open, FileAccess.Read)) { CopyStream(fileStream, newPackagePart.GetStream()); } } 1. Open the package
System.IO.Packaging using (Package package = Package.Open(packagePath, FileMode.Open,FileAccess.ReadWrite)) { Uri uriPartTarget = new Uri("/word/styles1.xml", UriKind.Relative); PackagePart newPackagePart = package.CreatePart(uriPartTarget, "application/vnd.ms-word.styles+xml"); using (FileStream fileStream = new FileStream(stylePath, FileMode.Open, FileAccess.Read)) { CopyStream(fileStream, newPackagePart.GetStream()); } } 1. Open the package 2. Access a document part (GetPart)
System.IO.Packaging using (Package package = Package.Open(packagePath, FileMode.Open,FileAccess.ReadWrite)) { Uri uriPartTarget = new Uri("/word/styles1.xml", UriKind.Relative); PackagePart newPackagePart = package.CreatePart(uriPartTarget, "application/vnd.ms-word.styles+xml"); using (FileStream fileStream = new FileStream(stylePath, FileMode.Open, FileAccess.Read)) { CopyStream(fileStream, newPackagePart.GetStream()); } } 1. Open the package 2. Access a document part (GetPart) 3. Create a document part (CreatePart)
System.IO.Packaging using (Package package = Package.Open(packagePath, FileMode.Open,FileAccess.ReadWrite)) { Uri uriPartTarget = new Uri("/word/styles1.xml", UriKind.Relative); PackagePart newPackagePart = package.CreatePart(uriPartTarget, "application/vnd.ms-word.styles+xml"); using (FileStream fileStream = new FileStream(stylePath, FileMode.Open, FileAccess.Read)) { CopyStream(fileStream, newPackagePart.GetStream()); } } 1. Open the package 2. Access a document part 3. Create a document part 4. Add content to the document part
Scénario développeur - Génération de document - Assemblage dun document - Manipulation de document demo demo
Customisation de linterface utilisateur dans les templates Office "12" Les templates Office "12" peuvent stocker un fichier XML de description dinterface pour Ajouter des onglets Ajouter des entrées dans le menu fichier Ajouter des contrôles dans les onglets Avantages Customisation de linterface utilisateur par template de document Facile à mettre en place pour le développeur
Deux méthodes de customisation de linterface Dans le template (Statique) Inclu dans le documentX Possibilité de faire des actions via VBA Sous forme dApplication (dynamic) Via.NET « shared add-in » Specific Doc/Template Doc Parts Custom UI Action Handlers Any Document Custom UI Action Handlers Shared Add-In
Customisation (Statique) 1. Créer un fichier XML de description du Ruban 2. Ouvrir le fichier ZIP Office "12" 3. Ajouter le fichier XML Ruban au ZIP 4. Ajouter un nouveau « Content type » 5. Ajouter une nouvelle relation 6. Renommer le fichier ZIP en template Office "12"
Customisation (Statique) demo demo
Stockage XML dans les documents Office 12 Les données XML sont séparées du reste du document Toutes les données sont stockés en XML Les propriétés du document Les métadonnées WSS Les données utilisateurs (avec ou sans schéma) Les données XML sont exploitables via DOM sans utiliser lAPI Office "12" Doc/Template Doc Parts VBA XML External App
Les XML dans les documents Sans schéma (VBA ou WordML et Excel ML)
Les XML dans les documents Avec schéma Customers oContentControl.XMLMapping.SetMapping(xpath,, oCustomXMLPart)
Données métier XML dans les documents Office "12" demo demo