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 )
 
    O Open XML ainda conta com uma comunidade, cujo site, contém vários exemplos ppt´s, foruns enfim uma vasta referência para quem deseja utilizar esta tecnologia. O endereço do site da comunidade é http://openxmldeveloper.org/ e o SDK pode ser baixado em http://www.microsoft.com/downloads/en/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en.
     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.