Desarrollo de Soluciones Utilizando los Formatos de Archivo Open XML de Microsoft Office System 2007...
-
Upload
maria-cristina-montoya-pinto -
Category
Documents
-
view
215 -
download
0
Transcript of Desarrollo de Soluciones Utilizando los Formatos de Archivo Open XML de Microsoft Office System 2007...
Desarrollo de Soluciones Desarrollo de Soluciones Utilizando los Formatos de Utilizando los Formatos de
Archivo Open XML de Archivo Open XML de Microsoft Office System 2007Microsoft Office System 2007
Microsoft CorporationMicrosoft Corporation
AgendaAgenda• Anticipo de DEMOAnticipo de DEMO• Formato Office Open XMLFormato Office Open XML• Papel de XML Papel de XML dentrodentro de los documentos de los documentos
OfficeOffice• Información estructuralInformación estructural• Ventajas en Open XML para Ventajas en Open XML para
desarrolladoresdesarrolladores• Alcance de la plataformaAlcance de la plataforma• DEMO (ver código)DEMO (ver código)
Escenarios de ejemploEscenarios de ejemplo
• Interoperabilidad de datosInteroperabilidad de datos• Manipulación de contenidosManipulación de contenidos• Compartir y reutilizar contenidosCompartir y reutilizar contenidos• Ensamblado del documentoEnsamblado del documento• Seguridad del documentoSeguridad del documento• Manejo de información sensibleManejo de información sensible• Estilos del documentoEstilos del documento• Análisis del documentoAnálisis del documento
Formato Office Open XMLFormato Office Open XML
Formatos Office Open XML Formatos Office Open XML • Nuevo formato para Microsoft Word, Excel y Nuevo formato para Microsoft Word, Excel y
PowerPointPowerPoint– Los nuevos formatos serán los formatos por defecto, con Los nuevos formatos serán los formatos por defecto, con
nuevas extensiones de archivo (.docx; .pptx; .xlsx)nuevas extensiones de archivo (.docx; .pptx; .xlsx)– Completamente -100%- compatible con los formatos Completamente -100%- compatible con los formatos
existentesexistentes
• El formato abierto y basado en protocolos El formato abierto y basado en protocolos estándar mejora la interoperabilidadestándar mejora la interoperabilidad– XMLXML
• Transparente, el formato XML permite nuevos panoramas de integración para los documentos y los sistemas de Line Of Business
– ZIPZIP• La compresión ZIP del paquete resuelve simultáneamente
la visión de único archivo para los usuarios y el acceso estándar a cada compenente por parte de los desarrolladores
– 100% Free100% Free• Covenant not to sue: Toda utilización del formato queda
100% libre de derechos
Formatos Office Open XML Formatos Office Open XML • EstandarizaciónEstandarización
– Ecma internacional - TC45 creado para Ecma internacional - TC45 creado para documentar completamente Open XML documentar completamente Open XML
– Los miembros incluyen: Apple, Barclays Los miembros incluyen: Apple, Barclays Capital, BP, the British Library, Essilor, Intel Capital, BP, the British Library, Essilor, Intel Corporation, NextPage Inc., Statoil ASA y Corporation, NextPage Inc., Statoil ASA y Toshiba Toshiba
– La especificación actual está ya en el orden de La especificación actual está ya en el orden de 2000 páginas2000 páginas
• Desarrolladores: NO hay límites Desarrolladores: NO hay límites – Las soluciones que creen podrán leer, escribir, Las soluciones que creen podrán leer, escribir,
y modificar íntegramente el contenido de los y modificar íntegramente el contenido de los archivos de Microsoft Office (sin la necesidad archivos de Microsoft Office (sin la necesidad de las APIs de Office)de las APIs de Office)
Formatos Office Open XML Formatos Office Open XML • Ventajas agregadas: compactación y robustezVentajas agregadas: compactación y robustez
– El contenedor ZIP permite la compresión estándar en El contenedor ZIP permite la compresión estándar en todos los archivos y produce mejoras dramáticas en su todos los archivos y produce mejoras dramáticas en su tamaño sin esfuerzo del usuario tamaño sin esfuerzo del usuario
– Los archivos considerablemente más robustos ayudan a Los archivos considerablemente más robustos ayudan a reducir al mínimo la pérdida de datosreducir al mínimo la pérdida de datos
• Compatible hacia atrás: Microsoft Office 2000, Compatible hacia atrás: Microsoft Office 2000, Microsoft Office XP, Microsoft Office 2003Microsoft Office XP, Microsoft Office 2003– Complementos de compatibilidad disponibles en el Complementos de compatibilidad disponibles en el
lanzamientolanzamiento– 100%: Grabar, Leer, Modificar100%: Grabar, Leer, Modificar
• Soporte de herencia: seguirá el soporte actual a Soporte de herencia: seguirá el soporte actual a formatos binarios Microsoft Office 97 - 2003 formatos binarios Microsoft Office 97 - 2003 – El soporte para los formatos anteriores no cambiaEl soporte para los formatos anteriores no cambia
Papel de XML dentro de Papel de XML dentro de los documentos Officelos documentos Office
El rol de XML en los El rol de XML en los DocumentosDocumentos
EscenarioEscenario EjemploEjemplo
Ensamblado de documentosEnsamblado de documentosConstrucción Construcción Server-based o User-assisted de documentos Server-based o User-assisted de documentos originados en contenidos provenientes de todo origen originados en contenidos provenientes de todo origen (incluyendo bases de datos, servicios, archivos, etc.)(incluyendo bases de datos, servicios, archivos, etc.)
Crear reportes de ventas desde financieros hasta de Crear reportes de ventas desde financieros hasta de pronóstico utilizando datos provenientes de un CRM pronóstico utilizando datos provenientes de un CRM
Reutilización de contenidoReutilización de contenido
Es mucho más fácil mover información entre documentos, Es mucho más fácil mover información entre documentos, inclusive entre diferentes tipos de documentos o mucho más inclusive entre diferentes tipos de documentos o mucho más aún.aún.
Aplique contenido almacenado en documentos Word a Aplique contenido almacenado en documentos Word a páginas Web rápida y eficientementepáginas Web rápida y eficientemente
Marcado de documentosMarcado de documentosMetadata específica puede ser añadida para proveer Metadata específica puede ser añadida para proveer soluciones personalizadassoluciones personalizadas
Marque presentaciones usando una taxonomía especifica y Marque presentaciones usando una taxonomía especifica y mejore la eficiencia del manejo de conocimientomejore la eficiencia del manejo de conocimiento
Consulta de documentosConsulta de documentosEs natural buscar información en repositorios de documentos Es natural buscar información en repositorios de documentos basados en custom data, content types o metadatabasados en custom data, content types o metadata
Buscar en todos los documentos un contacto específico, o Buscar en todos los documentos un contacto específico, o una empresa o…una empresa o…
Depuración de documentosDepuración de documentosRemover contenido no deseado como comentarios o código Remover contenido no deseado como comentarios o código embebido cuando sea necesarioembebido cuando sea necesario
Remover las revisiones y los comentarios de un documento Remover las revisiones y los comentarios de un documento cuando se publicacuando se publica
El rol de XML El rol de XML Reference y Custom-defined SchemasReference y Custom-defined Schemas
Custom-defined SchemasData-oriented (por ejemplo Precio, Factura)
Representan información de negocios dentro del documento
Favorecen la integración de sistemas
XML Reference SchemasDisplay-oriented (por ejemplo Bold, Italics, Tables, Paragraphs, Styles)
Abierto
Favorece el archivamiento y la interoperabilidad
El rol de XML El rol de XML Reference SchemasReference Schemas
<w:p> <w:r> <w:rPr><w:b /></w:rPr> <w:t>John Doe</w:t> </w:r> <w:r> <w:rPr><w:i /></w:rPr> <w:t>Health Agency</w:t> </w:r></w:p>
XML Reference SchemasDisplay-oriented
(por ejemplo Bold, Italics, Tables, Paragraphs, Styles)
AbiertoFavorece el archivamiento y la
interoperabilidad
<ConferenceReport> <Date>3/24/2004</Date> <Attendees> <Attendee Name=“John Doe”> <Department>
Health Agency </Department> <Potential> <Sales>100</Sales> <Growth>25%</Growth> … </Attendee>
El rol de XML El rol de XML Custom-defined SchemasCustom-defined Schemas
Custom-defined SchemasData-oriented (por ejemplo Precio, Factura)
Representan información de negocios dentro del documento
Favorecen la integración de sistemas
Información estructuralInformación estructural
Arquitectura Open XMLArquitectura Open XML
El usuario: 1 archivo
Questionnaire.docx
Partes del documentoMayormente XML
Cada una es un componente
No necesito Office para eliminar, agregar o modificar partes
Una corrupción o ausencia de una parte no bloquea el análisis del archivo
El desarrollador ve: 1 Estructura Modular
Document properties
Contenedor ZIP
Comments
WordML/SpreadsheetML, etc.
Custom-defined XML
Images, video, sound
Embedded code/macros
Charts
Componentes Open XMLComponentes Open XML
• PackagePackage – Contenedor ZIP – Contenedor ZIP• PartPart – Los “archivos” en el ZIP – Los “archivos” en el ZIP• Content TypesContent Types – Cada parte tiene un determinado tipo de – Cada parte tiene un determinado tipo de
contenido preestablecidocontenido preestablecido• RelationshipsRelationships – Las partes se referencian entre sí mediante – Las partes se referencian entre sí mediante
relaciones, éstas definen la estructura del paqueterelaciones, éstas definen la estructura del paquete
Document Properties
Application Properties
Custom Doc. Props.
Workbook
Sheet 2
Sheet 3
Sheet 1 Styles
Chart
Strings
Relationship
...
...
Nada de reinventar la rueda (se reutilizan los schemas de Office Nada de reinventar la rueda (se reutilizan los schemas de Office 2003 en toda la medida de lo posible)2003 en toda la medida de lo posible)
Word, por ejemplo, utiliza WordprocessingML 2003 (Schema Word, por ejemplo, utiliza WordprocessingML 2003 (Schema documentado)documentado)Los desarrolladores de WordprocessingML 2003 encontrarán los Los desarrolladores de WordprocessingML 2003 encontrarán los formatos muy similaresformatos muy similares
XML siempreXML siempreDonde no necesitamos binario (almacenamiento de imágenes por ej..), Donde no necesitamos binario (almacenamiento de imágenes por ej..), no lo hayno lo hayBinario Binario solamentesolamente si no "poseemos" un objeto si no "poseemos" un objeto
Modularidad que beneficia a los Desarrolladores y a usuarios Modularidad que beneficia a los Desarrolladores y a usuarios finalesfinales
Mover comentarios a partes separadasMover comentarios a partes separadasMueva las definiciones de estilo a una parte separada (cambie la hoja Mueva las definiciones de estilo a una parte separada (cambie la hoja del estilo fácilmente)del estilo fácilmente)Si una área del documento se corrompe, el resto del documento puede Si una área del documento se corrompe, el resto del documento puede todavía ser recuperadotodavía ser recuperado
Estrategias de diseñoEstrategias de diseño
WordprocessingMLWordprocessingMLDocument
bodyproperties
fontTable
headers/footers
images
numberingDefinitions
styles
customXML
footnotes/endnotes
commentsUn archivo WordprocessingML es unacollección de múltiples ‘subdocuments’, formalmente llamados stories:
Main storyHeader(s) / Footer(s)Footnote(s) / Endnote(s)SubdocumentsFrame(s)Comment(s)
SpreadsheetMLSpreadsheetMLWorkbook properties
table
chart
styles
calcChain
sharedStrings
sheet1..Nsheet1..Nsheet1..Nsheet1..N
sheet1..Nsheet1..Nsheet1..Ndrawing
PresentationMLPresentationML
View Properties Presentation
PresentationProperties
Code
Themes
Fonts
Slides
Notes Slides
Notes Masters
HandoutMasters
Slide Masters
Slide Layouts
Ventajas en Open XML Ventajas en Open XML para desarrolladorespara desarrolladores
Herramientas de acceso a Herramientas de acceso a archivos Office Open XMLarchivos Office Open XML
Edición XMLEdición XMLSystem.XMLSystem.XML
Paquete ZIPPaquete ZIP.Net 3.0 System.IO.Packaging.Net 3.0 System.IO.Packaging
Office Open XML Resource KitOffice Open XML Resource KitCode Snippets - Beta 2Code Snippets - Beta 2
C# y VB.NETValidation LibraryValidation Library
Analiza un archivo e informa sobre el Schema, errores en relaciones y advertencias
Serialization/Deserialization LibrarySerialization/Deserialization LibraryAplana el paquete en un solo archivo para facilidad del desarrollo en escenarios simples
.Net 3.0 – System.IO.Packaging.Net 3.0 – System.IO.PackagingConcretamente WindowsBase.dllConcretamente WindowsBase.dll
System.IO.Packaging System.IO.Packaging Funcionalidad de la APIFuncionalidad de la API
Crea y abre paquetesCrea y abre paquetes
crea y suprime piezas y relacionescrea y suprime piezas y relaciones
lee y escribe en/de las parteslee y escribe en/de las partes
itera a través de colecciones de partes y de relacionesitera a través de colecciones de partes y de relaciones
PackagePackagePartPackagePartCollectionPackageRelationshipPackageRelationshipCollectionPackUriHelper
System.IO.Packaging.System.IO.Packaging.PackagePackage
PackagePackage proporciona proporciona métodos para crear, métodos para crear, para enumerar y para para enumerar y para suprimir las entidades suprimir las entidades siguientes:siguientes:
PackagePackage
Package RelationshipsPackage Relationships
PackagePropertiesPackageProperties
PartsParts
Packag
e R
ela
tion
sh
ips
Core Properties
Common Package Parts
Thumbnail
Digital Signatures
officeDocument
XML Part
XML Part
Specific Format Parts
Etc…
Part R
els
XML Part
Part R
els
Cómo: obtener un paqueteCómo: obtener un paquete
• Necesitamos sólo la ubicación del documento (e indicar de Necesitamos sólo la ubicación del documento (e indicar de qué modo deseamos acceder al mismo)qué modo deseamos acceder al mismo)
Private Function ObtenerPaquete(ByVal NombreArchivo As Private Function ObtenerPaquete(ByVal NombreArchivo As String, ByVal TipoAcceso As FileAccess) As PackageString, ByVal TipoAcceso As FileAccess) As Package
Dim paquete As PackageDim paquete As Package TryTry paquete = paquete = Package.Open( _Package.Open( _ NombreArchivo, FileMode.Open, TipoAcceso)NombreArchivo, FileMode.Open, TipoAcceso) Catch ex As IOExceptionCatch ex As IOException ‘ ‘Manejar excepciones aquí…..Manejar excepciones aquí….. End TryEnd Try Return paqueteReturn paquete End FunctionEnd Function
System.IO.Packaging.System.IO.Packaging.RelationsRelationshiphip
Las relaciones vinculan a las Las relaciones vinculan a las piezas entre sípiezas entre síRequeridas para encontrar Requeridas para encontrar partes (los nombres de la parte partes (los nombres de la parte no están garantizados)no están garantizados)Itere la RelationshipCollection Itere la RelationshipCollection por Type o IDpor Type o IDPropiedades de la relación:Propiedades de la relación:
IDIDPackagePackageRelationshipTypeRelationshipTypeSourceUriSourceUriTargetModeTargetModeTargetUriTargetUri
Packag
e R
ela
tion
sh
ips
Core Properties
Common Package Parts
Thumbnail
Digital Signatures
officeDocument
XML Part
XML Part
Specific Format Parts
Etc…
Part
Rels
XML Part
Part
Rels
Cómo: obtener las Cómo: obtener las relacionesrelaciones
• Las relaciones nos muestran la estructura Las relaciones nos muestran la estructura del paquetedel paquete
• GetRelationshipsGetRelationships se puede usar con se puede usar con Package o PackagePartPackage o PackagePart
Dim retValue As New Dim retValue As New Collections.Generic.List(Of Collections.Generic.List(Of PackageRelationship)PackageRelationship)
For Each relacion As For Each relacion As PackageRelationship In PackageRelationship In parte.parte.GetRelationshipsGetRelationships
retValue.Add(relacion)retValue.Add(relacion) NextNext
System.IO.Packaging.System.IO.Packaging.PackagePPackagePartart
Las partes son los objetos de Las partes son los objetos de datos dentro del paquetedatos dentro del paquetePackagePart proporciona la PackagePart proporciona la ayuda para crear, para ayuda para crear, para enumerar y para suprimir enumerar y para suprimir relaciones relaciones Obtenga Obtenga los datos de la parte los datos de la parte como Streamcomo StreamPropiedades de PackagePart :Propiedades de PackagePart :
CompressionOptionCompressionOptionContentTypeContentTypePackagePackageUriUri
Packag
e R
ela
tion
sh
ips
Core Properties
Common Package Parts
Thumbnail
Digital Signatures
officeDocument
XML Part
XML Part
Specific Format Parts
Etc…
Part R
els
XML Part
Part R
els
Cómo: obtener las partesCómo: obtener las partes
• Las partes con contenido (filtramos las Las partes con contenido (filtramos las relaciones)relaciones)
For Each parte As PackagePart In For Each parte As PackagePart In paquete.paquete.GetPartsGetParts
If Not parte.ContentType = If Not parte.ContentType = relationShipType ThenrelationShipType Then
Console.WriteLine(parte.Uri) Console.WriteLine(parte.Uri) Console.WriteLine(parte.ContentType)Console.WriteLine(parte.ContentType)
End IfEnd If
NextNext
Nueva comunidad destinada a DesarrolladoresNueva comunidad destinada a DesarrolladoresPatrocinada actualmente por casi 40 instituciones de todo Patrocinada actualmente por casi 40 instituciones de todo el mundoel mundoComunidad y Web site para intercambio de informaciónComunidad y Web site para intercambio de informaciónCode Snippets, Herramientas, DiscusionesCode Snippets, Herramientas, DiscusionesGratuitamente disponible para quien desea participar y/o Gratuitamente disponible para quien desea participar y/o estimular el desarrollo en todas las plataformas.estimular el desarrollo en todas las plataformas.Sea uno de los primeros en vincularse con esta Sea uno de los primeros en vincularse con esta comunidad!comunidad!http://openxmldeveloper.orghttp://openxmldeveloper.org
Alcance de la plataformaAlcance de la plataforma
Desarrollo Open XMLDesarrollo Open XML
• Soluciones más confiablesSoluciones más confiables– Las herramientas de terceros eran causa principal de las corrupciones de un Las herramientas de terceros eran causa principal de las corrupciones de un
documentodocumento
• Formatos completamente documentadosFormatos completamente documentados– Disponible para descarga con licencia royalty freeDisponible para descarga con licencia royalty free– Los Los schemas schemas del formato del archivo del formato del archivo Office Office validan el contenido para una parte validan el contenido para una parte
dadadada
• Ejemplos, ejemplos, ejemplos Ejemplos, ejemplos, ejemplos – Bajo la forma de Bajo la forma de code code "snippets" para mayor practicidad de uso e integración con "snippets" para mayor practicidad de uso e integración con
las las Visual Studio Tools for the Microsoft Office System (VSTO)Visual Studio Tools for the Microsoft Office System (VSTO)
• .Net 3.0 Package APIs.Net 3.0 Package APIs – Acceso y mantenimiento de parts y relationships en el paqueteAcceso y mantenimiento de parts y relationships en el paquete– Maneja implícitamente toda la compresión ZIPManeja implícitamente toda la compresión ZIP
Desarrollo Open XMLDesarrollo Open XML
• XPath XPath – Navegación dentro del contenido Navegación dentro del contenido
• XML DOMXML DOM – Manipulación del contenidoManipulación del contenido
• Office Open XML Resource KitOffice Open XML Resource Kit– Herramientas para construir y desarmar los archivosHerramientas para construir y desarmar los archivos– Design time Validation toolDesign time Validation tool
• Analiza un archivo y reporta anomalías
– Runtime serialization tool Runtime serialization tool • Unifica el paquete
RecursosRecursos
• Office Preview Site: http://www.microsoft.com/office/preview/ Office Preview Site: http://www.microsoft.com/office/preview/
• Brian Jones’s Blog: http://blogs.msdn.com/Brian_Jones/ Brian Jones’s Blog: http://blogs.msdn.com/Brian_Jones/
• Kevin Boske’s Blog: http://blogs.msdn.com/KevinBoske/Kevin Boske’s Blog: http://blogs.msdn.com/KevinBoske/
• Erika Ehrli’s Blog: http://blogs.msdn.com/erikaehrli/ Erika Ehrli’s Blog: http://blogs.msdn.com/erikaehrli/
• Office 2003 Reference Schema Information: Office 2003 Reference Schema Information: http://www.microsoft.com/office/xml/ http://www.microsoft.com/office/xml/
MauricioMauricio [email protected]@mvtechs.com
MVTech’sMVTech’s
Muchas graciasMuchas gracias