A partir da versão 2003, você deve ter percebido que as extensões de aplicativos como word e excel, vinham com um “X” no final da extensão; e ao invés da extensão ser doc passou a ser docx e xls passou a ser xlsx. Isto se deve ao fato da Microsoft ter criado um padrão aberto para representação de documentos chamado Open XML. A partir de então alguns produtos da suíte office passaram terem seus documentos baseados neste padrão. Veja abaixo:
Salve em uma pasta um documento com o nome TesteOpenXML.docx
Depois renomeie o arquivo conforme mostra a figura abaixo de .DOCX para .ZIP
Faça a estação do arquivo .ZIP e você verá uma pasta com a estrutura igual a mostrada abaixo:
É sobre este “mistério”( risos ) que estaremos falando neste artigo.
Conhecendo o Open XML
O Open XML, é um padrão aberto para representação de documentos office. Ele é um padrão aberto e livre de royalties, isto faz dele um padrão forte por que por ser aberto, ele pode ser utilizado por qualquer plataforma. Ele atualmente é um padrão internacional ( ISO ) e é suportado até por produtos que não são da plataforma Microsoft.
Um breve histórico
Manipular documentos office, não era uma tarefa muito fácil antes do Open XML. Inicialmente utilizava-se algo chamado Office automation, um modelo baseado em COM, parcialmente documentado e de difícil manipulação. Surgiu então o VSTO Visual Studio Tools for Office System, que facilitou e muito a vida dos desenvolvedores que precisavam criar aplicações que se integravam com a plataforma Office, mais ainda assim, além de não ser a maneira ideal de integrar aplicativos ainda não era interoperável por que era uma tecnologia somente para aplicações.NET .
Surgiu então o Open XML que além de todas as vantagens apresentadas anteriormente, por se baseado em XML e utilizar a packing convention( conversão baseada em arquivos .Zip ) é totalmente interoperável com outras plataformas, fazendo do Open XML um padrão forte e que pode ser utilizado por outras plataformas. Observe o quadro abaixo:
|
Linux
|
Java
|
.net
|
COM+ |
ZIP Library |
Minizip
zLib |
J2SE
java.util.zip
|
.NET Framework 3.0
System.IO. Packaging*
Microsoft SDK for Open XML Formats **
Xceed .NET controls
|
Xceed ActiveX controls |
XML Library |
Apache Xerces |
JAXP |
.NET Framework 3.0
System.Xml |
MSXML |
Como a tabela acima mostra, em cada plataforma existe uma tecnologia ou componente, específico para se trabalhar com XML e arquivos .ZIP, o que torna possível o Open XML interoperar com outras plataformas.
Arquitetura do Open XML
A arquitetura do Open xml é composta de alguns elementos que se relacionam. Veja abaixo a arquitetura e os elementos.
Package – O container, ou seja, um elemento que abriga outros elementos, podendo ser um arquivo de media ou até mesmo um documento do word por exemplo.
Documen Parts – Os componentes de um documento. Em relação ao Open XML quando utilizamos o termo parte, na verdade, estamos nos referindo a um componente dentro do documento, que pode ser um arquivo de imagem ou até o próprio documento em si.
Content Types Stream – Define o Tipo de uma parte, ou seja, um componente. O componente poder ser um arquivo de vídeo ou uma Imagem por exemplo.
Relationships – São os Relacionamentos que ligam as partes do documento( Document parts ). Os relacionamentos possuem um id, que é utilizado na hora de relacionar internamente as partes de um documento.
Start Part - A Raiz do documento, a parte que abriga outros elementos dentro do documento.
Desenvolvendo utilizando o Open XML
Para desenvolver utilizando Open XML, é super fácil. Basta apenas você ter uma biblioteca de manipulação de arquivos Zip e uma biblioteca de manipulação de arquivos XML. Observe os tópicos abaixo:
.NET APÍ´S de Desenvolvimento
· Packaging API : Gerenciamento do arquivo ZIP( introduzida no .NET a partir da versão 3.0 )
· XML( DOM, XPath etc.. ) e LINQ To XML: Gerenciamento de XML
· Open XML SDK: Gerenciamento de arquivos Open XML
Desenvolvendo com o Open XML SDK
O Open XML SDK é um kit de desenvolvimento disponibilizado pela Microsoft, para manipular arquivos Open XML. É uma biblioteca mais “tipada”, ou seja, ela já conhece determinados elementos e traduz em objetos. Tem todo um modelo de classes que podem ser utilizadas para desenvolver aplicativos que manipulem arquivos Open XML. Veja abaixo algumas características do Open XML SDK:
Suporte ao padrão ISO
Possui uma biblioteca mais “tipada”
Possui uma boa documentação
Traz utilitários de apoio ao desenvolvimento utilizando o SDK
- DocumentReflector ( ao abrir um documento por este aplicativo, você pode ver o Xml relacionado ao documento, e como ele poderia ser construido utilizando as classes do SDK ).
- OpenXmlClassesExplorer ( permite navegar pelas classes do SDK )
- OpenXmlDiff ( mostra se há diferença entre 2 documentos )
Bom pessoal espero ter ajudado, que vocês possam tirar proveito desta tecnologia e não sofrer um “parto” para desenvolver aplicativos que se integram com o office.