« les mercredis du développement » nouveau format de fichier template solution présenté par...
TRANSCRIPT
« Les Mercredis du développement »« Les Mercredis du développement »
Nouveau format de fichierNouveau format de fichierTemplate SolutionTemplate Solution
Présenté par Pierre Lagarde
[email protected] Développeurs
Microsoft France
Level 200Level 200Level 200Level 200
Nouveau format de fichier Office "12"Nouveau format de fichier Office "12"IntroductionIntroduction
ArchitectureArchitecture
AvantagesAvantages
Scénario de développementScénario de développement
Template Office "12"Template Office "12"Customisation de l’interface utilisateurCustomisation de l’interface utilisateur
Données XML dans les documentsDonnées XML dans les documents
AgendaAgenda
Evolution des formats Evolution des formats
Office 2000InnovationPropriétés du
document sauvegardé en XML
Office 97Nouveau format binaire(celui d’aujourd’hui)
Office XPPremier format XMLFeuille de calcul Excel
Office 2003Support du format XMLWordML, ExcelMLSchéma métier
Office “12”Nouveaux formats
XMLFormat XML par défautWord, Excel,
Powerpoint
“12”
Manipuler les documents Manipuler les documents office aujourd’huioffice aujourd’hui
Office 2000/XPOffice 2000/XPPar automation en utilisant le model objet COMPar automation en utilisant le model objet COM
Scénario server, installer Office sur le serveurScénario server, installer Office sur le serveurPas supportéPas supporté
Problème de performanceProblème de performance
Problème de montée en chargeProblème de montée en charge
Office 2003Office 2003Meilleur support des scénarii serveurMeilleur support des scénarii serveur
WordML et ExcelMLWordML et ExcelML
Mise à disposition d’un « Data Island » manipulable via des Mise à disposition d’un « Data Island » manipulable via des class de VSTOclass de VSTO
Nécessite la connaissance des schémas XML Office 2003Nécessite la connaissance des schémas XML Office 2003
Nécessite parfois des transformations XSLTNécessite parfois des transformations XSLT
Microsoft Office Open XML Microsoft Office Open XML File FormatsFile Formats
Macro-FreeMacro-Free Macro-EnabledMacro-Enabled
DocumentDocument TemplateTemplate DocumentDocument TemplateTemplate
docx dotx docm dotm
pptx potx pptm potm
xlsx xltx xlsm xltm
Open Packaging ConventionOpen Packaging Convention
CompatibilitéCompatibilité
Office "12"Office "12"Support des formats Office 97-2003 binaireSupport des formats Office 97-2003 binairePossibilité de changer le type de Possibilité de changer le type de sauvegarde par défautsauvegarde par défautContinuité dans le format XML d’Office Continuité dans le format XML d’Office 2003 et XP2003 et XP
Office 2000, Office XP, Office 2003 Office 2000, Office XP, Office 2003 supporteront le nouveau formatsupporteront le nouveau format
Patch disponible au lancement d’Office Patch disponible au lancement d’Office "12""12"Ouverture, Edition et SauvegardeOuverture, Edition et Sauvegarde
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Vu Utilisateur: Un seul fichier
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Questionnaire.docx
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Questionnaire.docx
Package
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Questionnaire.docx
Package
[Content Types].xml
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Questionnaire.docx
Package
Document Partsword / xl /ppt
[Content Types].xml
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Questionnaire.docx
Package
Document, Application, Custom Document PropertiesdocProps
Document Partsword / xl /ppt
[Content Types].xml
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Questionnaire.docx
Package
Relationships_rels
Document, Application, Custom Document PropertiesdocProps
Document Partsword / xl /ppt
[Content Types].xml
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Office Open XML ArchitectureOffice Open XML Architecture
Questionnaire.docx
Questionnaire.docx
Package
Relationships_rels
Document, Application, Custom Document PropertiesdocProps
Document Partsword / xl /ppt
[Content Types].xml
Custom Defined XML, Macros, …custom fld
Vu Utilisateur: Un seul fichier
Vu développeur: fichier zip
Nouveau format de fichierNouveau format de fichier
demodemo
Scénario DéveloppeurScénario Développeur
Créer des solutions de lecture, écriture Créer des solutions de lecture, écriture modification sur les fichiers Office sans passer modification sur les fichiers Office sans passer par l’API Officepar l’API Office
Utilisation des API WinFX Utilisation des API WinFX
Ouverture du fichier Open XML OfficeOuverture du fichier Open XML Office
Maintien des « Part » et des « Relations » dans le Maintien des « Part » et des « Relations » dans le fichierfichier
Programmation XMLProgrammation XML
XPath – Navigation dans le contenuXPath – Navigation dans le contenu
XML DOM – Manipulation du contenuXML DOM – Manipulation du contenu
API WinFxAPI WinFx
Microsoft WinFX Software Development Microsoft WinFX Software Development Kit (SDK CTP Janvier)Kit (SDK CTP Janvier)
System.IO.Packaging namespace System.IO.Packaging namespace Ajouter des “Part”, Ajouter des “Part”,
Mise à jour du contenu, Mise à jour du contenu,
Créer des nouvelles relationsCréer des nouvelles relations
Importer les ClassesImporter les ClassesPackage, Package,
PackagePart, PackagePart,
PackageRelationshipPackageRelationship
System.IO.PackagingSystem.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.1. Open the packageOpen the package
System.IO.PackagingSystem.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.1. Open the packageOpen the package
2.2. Access a document part (GetPart)Access a document part (GetPart)
System.IO.PackagingSystem.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.1. Open the packageOpen the package
2.2. Access a document part (GetPart)Access a document part (GetPart)
3.3. Create a document part (CreatePart)Create a document part (CreatePart)
System.IO.PackagingSystem.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.1. Open the packageOpen the package
2.2. Access a document partAccess a document part
3.3. Create a document partCreate a document part
4.4. Add content to the document partAdd content to the document part
Scénario développeurScénario développeur- Génération de document- Génération de document- Assemblage d’un document- Assemblage d’un document- Manipulation de document- Manipulation de document
demodemo
Customisation de l’interface utilisateur Customisation de l’interface utilisateur dans les templates Office "12"dans les templates Office "12"
Les templates Office "12" peuvent stocker un fichier Les templates Office "12" peuvent stocker un fichier XML de description d’interface pourXML de description d’interface pour
Ajouter des ongletsAjouter des onglets
Ajouter des entrées dans le menu fichierAjouter des entrées dans le menu fichier
Ajouter des contrôles dans les ongletsAjouter des contrôles dans les onglets
AvantagesAvantagesCustomisation de l’interface utilisateur par template de Customisation de l’interface utilisateur par template de documentdocument
Facile à mettre en place pour le développeurFacile à mettre en place pour le développeur
Deux méthodes de Deux méthodes de customisation de l’interfacecustomisation de l’interface
Dans le template (Statique)Dans le template (Statique)Inclu dans le documentXInclu dans le documentXPossibilité de faire des actions Possibilité de faire des actions via VBAvia VBA
Sous forme d’Application Sous forme d’Application (dynamic)(dynamic)
Via .NET « shared add-in »Via .NET « shared add-in »
Specific Doc/Template
Doc Parts
Custom UI
ActionHandlers
Any Document
Custom UIAction
Handlers
Shared Add-In
Customisation (Statique)Customisation (Statique)1.1. Créer un fichier XML de description du Créer un fichier XML de description du
RubanRuban2.2. Ouvrir le fichier ZIP Office "12"Ouvrir le fichier ZIP Office "12"3.3. Ajouter le fichier XML Ruban au ZIPAjouter le fichier XML Ruban au ZIP4.4. Ajouter un nouveau « Content type »Ajouter un nouveau « Content type »
5.5. Ajouter une nouvelle relation Ajouter une nouvelle relation
6.6. Renommer le fichier ZIP en template Office Renommer le fichier ZIP en template Office "12""12"
<Override PartName="/customui/customui.xml“ContentType="application/xml"/>
<Relationship Id="rId*" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
Target="customui/customui.xml"/>
Customisation (Statique)Customisation (Statique)
demodemo
Stockage XML dans les Stockage XML dans les documents Office “12”documents Office “12”
Les données XML sont Les données XML sont séparées du reste du séparées du reste du documentdocument
Toutes les données sont Toutes les données sont stockés en XML stockés en XML
Les propriétés du documentLes propriétés du document
Les métadonnées WSSLes métadonnées WSS
Les données utilisateurs (avec ou Les données utilisateurs (avec ou sans schéma)sans schéma)
Les données XML sont Les données XML sont exploitables via DOM sans exploitables via DOM sans utiliser l’API Office "12"utiliser l’API Office "12"
Doc/Template
Doc Parts
VBA
XML
External App
Les XML dans les documents Les XML dans les documents
Sans schéma Sans schéma (VBA ou WordML et Excel ML)(VBA ou WordML et Excel ML)
Les XML dans les documentsLes XML dans les documents
Avec schémaAvec schéma
Customers
oContentControl.XMLMapping.SetMapping(xpath, , oCustomXMLPart)
Données métier XML dans Données métier XML dans les documents Office "12"les documents Office "12"
demodemo