<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6319731039818317271</id><updated>2011-04-21T21:59:01.235-07:00</updated><category term='user groups microsoft'/><title type='text'>Mauricio Grimberg al día</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mauricioenlinea.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mauricioenlinea.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mauricio Grimberg</name><uri>http://www.blogger.com/profile/09100970566531766058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6319731039818317271.post-4536163432166174636</id><published>2007-07-13T13:00:00.000-07:00</published><updated>2007-07-13T13:53:35.915-07:00</updated><title type='text'>El formato Open XML de Microsoft Office</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Yo utilizo Word, Excel y PowerPoint con enorme frecuencia – tal vez como quienes lean esto - y me toca estar en presencia de un cambio &lt;span class="ResaltadoCar"&gt;significativo&lt;/span&gt; en herramientas de trabajo cotidiano. Estoy empeñado en colaborar con este cambio llamado Open XML.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Imperceptiblemente, gradualmente esos archivos de Microsoft Office se guardarán de un nuevo modo y detrás de ese cambio está el hecho de que la información que voy incorporando a los mismos es verdaderamente procesable, analizable, transferible con o sin la estética que he utilizado para presentarla.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;El conflicto entre datos y formato disminuye cada vez más. Nuestras horas de trabajo pueden quedar expuestas o ser aprovechadas de otra manera.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;A eso yo llamo &lt;span class="ResaltadoCar"&gt;cambio&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpFirst" style="TEXT-INDENT: -18pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span lang="ES"&gt;&lt;br /&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;La información quedará “desprendible” del formato que adopta&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -18pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span lang="ES"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;Mi información queda disponible para ser reprocesada eficientemente&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="TEXT-INDENT: -18pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span lang="ES"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;El cambio comprende a todos los documentos Word, Excel y PowerPoint &lt;i&gt;producidos desde el cambio de siglo&lt;/i&gt; y más aún.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Lo primero que cambia es el &lt;span class="ResaltadoCar"&gt;modelo&lt;/span&gt; informativo de los documentos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Un archivo de Excel 2003 (extensión &lt;i&gt;xls)&lt;/i&gt;, por ejemplo, era una caja fuerte binaria dependiente de Excel. El archivo &lt;span class="ResaltadoCar"&gt;era&lt;/span&gt; prácticamente imposible de manipular fuera de Office.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Eso &lt;span class="ResaltadoCar"&gt;era&lt;/span&gt; natural. ¿Sí? ¿Por qué debería ser de otra manera?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Porque la tecnología de la información está cambiando todo el tiempo. Porque ese paquete no sirve para el cable, que es el lugar en el que está la información que importa.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;No sirve porque guarda la información de una manera &lt;span class="ResaltadoCar"&gt;ininteligible&lt;/span&gt; para un adecuado proceso automático y no sirve porque es &lt;span class="ResaltadoCar"&gt;propietaria&lt;/span&gt;, demasiado propietaria para la cantidad de información que se acumula en los escritorios de todo el planeta en forma de presentaciones, documentos de texto y hojas de cálculo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Microsoft abrió el juego, el formato de estos documentos dejó de ser propietario, es ahora un estándar abierto y su uso es gratuito.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Ante este cambio se me ofrecen 2 &lt;span class="ResaltadoCar"&gt;puntos de vista&lt;/span&gt; diferentes: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpFirst" style="TEXT-INDENT: -18pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span lang="ES"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;El punto de vista del desarrollo: cómo se crea, se analiza o se modifica un archivo Word, Excel o PowerPoint a partir de Open XML sin utilizar Office, sin licencia de Office, sin VBA, sin nada más que nuestra plataforma habitual de desarrollo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="TEXT-INDENT: -18pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span lang="ES"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;El punto de vista del significado: de qué sirve y por qué es &lt;span class="ResaltadoCar"&gt;importante&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;El primer punto de vista, el del desarrollo, el punto de vista técnico, de grano fino no es impactante porque - justamente - se trata de utilizar nuestras herramientas &lt;span class="ResaltadoCar"&gt;habituales&lt;/span&gt; de programación.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Para los programadores .Net voy a mostrar un poco de Packaging, el namespace de .Net destinado a Open XML.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Voy a guardar una copia de este mismo documento que están leyendo en el escritorio de otra máquina: un Windows Server 2003 que no tiene Office en ninguna de sus versiones.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Windows no reconocerá el formato de archivo (.docx en este caso) ya que Office no está instalado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¡Vamos a renombrar el archivo con extensión .zip para poder abrirlo!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Lo descomprimimos aprovechando el cambio de extensión. Y ¿qué vemos? Una carpeta de Windows con subcarpetas y archivos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¡En realidad el archivo es una carpeta comprimida que contiene carpetas y archivos (mayormente XML aunque hay algunos binarios como las imágenes y los proyectos VBA)!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¿Entienden ahora lo de OPEN?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN-LEFT: 55.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:Symbol;"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;Una carpeta _rels contiene información de relaciones entre partes del documento (en qué lugar se inserta una imagen, por ejemplo)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN-LEFT: 55.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:Symbol;"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;docProps trae información básica del documento en archivos XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN-LEFT: 55.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:Symbol;"&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;Word (según podemos ver en la ilustración 3) trae la información que esperamos encontrar&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN-LEFT: 91.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:'Courier New';"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;Estilos&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN-LEFT: 91.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:'Courier New';"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;Fuentes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN-LEFT: 91.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:'Courier New';"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;El contenido del documento&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="MARGIN-LEFT: 91.4pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"  style="font-family:'Courier New';"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES"&gt;Etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Esa información que estamos observando aquí es accesible, obviamente, por vía de programación.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;No podría ser de otro modo: son documentos &lt;span class="ResaltadoCar"&gt;XML&lt;/span&gt; dentro de un archivo &lt;span class="ResaltadoCar"&gt;ZIP&lt;/span&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Hagamos un rápido paso a paso utilizando .Net.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Creamos una aplicación de consola y agregamos una referencia a &lt;span class="ResaltadoCar"&gt;WindowsBase&lt;/span&gt; para poder importar System.IO.&lt;span class="ResaltadoCar"&gt;Packaging&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="ES"&gt;Abrimos el archivo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="ES"&gt;C#&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;private Package ObtenerPaquete(string NombreArchivo, FileAccess TipoAcceso)&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;Package paquete;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;try&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;paquete = Package.Open(NombreArchivo, FileMode.Open, TipoAcceso);&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;catch (IOException ex)&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;//Manejar excepciones aquí…..&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;&lt;/span&gt;throw;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;return paquete;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="EN-US"&gt;VB&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Private Function ObtenerPaquete(ByVal NombreArchivo As String, ByVal TipoAcceso As FileAccess) As Package &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Dim paquete As Package &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;paquete = Package.Open( _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;NombreArchivo, FileMode.Open, TipoAcceso)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Catch ex As IOException &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;‘Manejar excepciones aquí…..&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;End Try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Return paquete&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;End Function &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;Obtenemos un XmlDocument de un archivo XML dentro del paquete:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="EN-US"&gt;C#&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;private static System.Xml.XmlDocument PartToXMLDocument(PackagePart parte)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;System.Xml.XmlDocument doc=new XmlDocument();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;doc.Load(parte.GetStream());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;return doc;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="EN-US"&gt;VB&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Private Shared Function PartToXMLDocument(ByVal parte As PackagePart) As System.Xml.XmlDocument&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Dim doc As System.Xml.XmlDocument = New XmlDocument()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;doc.Load(parte.GetStream())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Return doc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;End Function&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoSubtitle"&gt;&lt;em&gt;&lt;span style="TEXT-TRANSFORM: none"&gt;Localizamos el archivo (la parte) deseado dentro del paquete: &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/em&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="EN-US"&gt;C#&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;private static System.Xml.XmlDocument doc(Package paquete)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;foreach (PackagePart var in paquete.GetParts())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;if(var.Uri.OriginalString==@"/word/document.xml")&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;return PartToXMLDocument(var);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;return null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="EN-US"&gt;VB&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="Codigo"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;Private Shared Function doc(ByVal paquete As Package) As System.Xml.XmlDocument&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;For Each var As PackagePart In paquete.GetParts()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;If var.Uri.OriginalString = "/word/document.xml" Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;Return PartToXMLDocument(var)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span lang="EN-US" style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;&lt;/span&gt;&lt;span style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;Return Nothing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;i&gt;&lt;span style="TEXT-TRANSFORM: none; LETTER-SPACING: 0pxcolor:#4f81bd;" &gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoSubtitle"&gt;&lt;span lang="ES"&gt;Integrando todo, este código nos muestra todo el texto escrito en el documento en una ventana de consola:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid"&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;static void Main(string[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;Package paquete = ObtenerPaquete(@"F:\Deploy\Office 2007 Open XML.docx", FileAccess.ReadWrite);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;span lang="ES"&gt;System.Xml.XmlDocument Texto = doc(paquete);///&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;XmlNameTable nt = new NameTable();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;XmlNamespaceManager nsMgr = new XmlNamespaceManager(nt);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;nsMgr.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;foreach (System.Xml.XmlNode var in Texto.SelectNodes("w:document/w:body/w:p/w:r/w:t",nsMgr))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;span lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;Console.WriteLine(var.InnerXml);&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;Console.Read();&lt;/span&gt;&lt;/p&gt;&lt;p class="Codigo"&gt;&lt;span lang="ES"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Como vemos en el código fuente nunca utilizamos Office sino algunas utilidades específicas de .Net alrededor de la compresión Zip para obtener el paquete y de XML para analizar contenidos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Antes era binario y necesitábamos Word para editar Word, Excel para editar Excel. Ahora que es Zip + XML lo abrimos con múltiples herramientas al alcance de cualquiera.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Obviamente un proceso ZIP/XML como este no excluye casi ninguna plataforma actual de desarrollo, podemos procesar esta información con variadísimas herramientas de desarrollo en cualquier sistema operativo sin - obviamente - disponer de Office.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Tienes la opción de buscar el código escrito ya en &lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://openxmldeveloper.org/"&gt;&lt;span lang="ES"&gt;http://openxmldeveloper.org&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="ES"&gt; en donde hoy puedo ver – a modo de ejemplo - código para crear una hoja de cálculo Excel en PHP, la noticia de que Altova XML Spy soporta edición directa de Open XML y de que Novell soporta el formato en Open Office, creación de documentos Office en un servidor Windows que no tiene Office instalado (usando sólo código .Net), conversiones de Excel a HTML o XBRL, código fuente Java, generación dinámica de documentos Office obtenibles como servicio, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Lo difícil es lo fácil: cualquier buen programador con experiencia en XML puede corroborar lo que digo. Trabajar la tecnología es de una complejidad no más que media.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¿Es una jugada fuerte no?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Antes los documentos eran ininteligibles y ahora son transparentes como peceras.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="ES"&gt;El jueves pasado en la subsidiaria de Microsoft en Buenos Aires presenté una charla sobre Open XML.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Creo que llegué a algo cuando dije que – en Open XML - "lo fácil es lo difícil y lo difícil es lo fácil".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Lo difícil no es codificar sino entender el nuevo paradigma de “&lt;span class="ResaltadoCar"&gt;documentos transparentes&lt;/span&gt;”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;No vayan por el lado de la seguridad en este momento por favor: claro que podemos firmar, encriptar, proteger, asegurar, etc. Claro que sí.&lt;a name="Hasta_aquí"&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;También la seguridad de macros queda controlada de una manera mucho más drástica. Hay extensiones de archivos Office que no van a ejecutar macros de ningún modo, ni siquiera las firmadas. Esos documentos enviados por email serán tan seguros como un archivo de texto plano.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Todo lo contrario: los nuevos archivos son más seguros y más pequeños. La iniciativa incluye la conversión necesaria (de uso libre) para trabajar con Open XML desde Office 2000 en adelante como formato normal y reemplazar en el uso cotidiano el formato anterior por el nuevo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Es todo ganancia. Todo, sin duda. Quienes trabajen en versiones anteriores de Office podrán guardar sus documentos y leer/escribir los nuevos sin otro sacrificio que instalar un liviano &lt;/span&gt;plug&lt;span lang="ES"&gt;-in gratuito descargable desde &lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=941b3470-3ae9-4aee-8f43-c6bb74cd1466&amp;displaylang=es"&gt;&lt;span lang="ES"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=941b3470-3ae9-4aee-8f43-c6bb74cd1466&amp;amp;displaylang=es&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="ES"&gt; .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;La apertura de los archivos va más allá aún. Como los documentos Open XML son de esquema abierto podemos &lt;span class="ResaltadoCar"&gt;agregar&lt;/span&gt; información XML que Office no entienda simplemente porque queremos que este allí como metadata, como información sobre la información.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Un recurso poderoso si deseamos que estos documentos formen parte de desarrollos que manejen librerías o flujos o lo que la necesidad dicte.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Por ejemplo un documento que genera un alta de operación podría ir acompañado de información precisa firmada digitalmente e incluida en el documento como una “parte” más.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¿Cómo haríamos esto de otro modo? Nunca con esta limpieza y claridad.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Otro concepto importante es lo que yo denomino el “rompecabezas”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Hay una decisión de diseño en el formato de Office 2007 distinta a las versiones XML anteriores.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;En aquellos casos los documentos consistían de un solo documento XML, lo cual traía consecuencias no deseadas como por ejemplo la incrustación de las imágenes como binarios codificados, la dificultad para incluir otras características (este es el primer formato XML de Office que soporta totalmente todo lo que Office proporciona y – más aún - es el formato por defecto en Office 2007; las versiones XML anteriores tenían límites y no soportaban algunas características de Office como escenarios, VBA, etc.) y el crecimiento del tamaño de archivo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;La solución Open XML de 1 sólo archivo apunta a 2 características sustanciales:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpFirst" style="TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;A que no cambie la experiencia del usuario no avanzado&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="TEXT-INDENT: -18pt"&gt;&lt;span lang="ES"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;A la &lt;span class="ResaltadoCar"&gt;modularidad&lt;/span&gt; (el “rompecabezas”)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Esta modularidad define archivos específicos para características precisas (hojas de cálculo, imágenes, texto del documento, cadenas de texto reutilizables, fuentes, estilos) dentro de carpetas de archivos y un esquema de relaciones que pone todo junto.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Todo especificadito (Open Packaging Conventions) y claro.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si – por ejemplo - quiero cambiar una imagen en un documento Word abro el paquete y cambio el archivo específico de esa imagen (GIF/PNG/JPG, etc.) o si deseo cambiar los datos de un gráfico Excel voy a la hoja de cálculo (hay un documento XML específico para cada hoja de cálculo) que los contiene y así sucesivamente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si deseo generar documentos en Runtime puedo “juntar” información de diferentes orígenes a la hora de &lt;span class="ResaltadoCar"&gt;&lt;span lang="ES"&gt;componer&lt;/span&gt;&lt;/span&gt; el archivo (una imagen en el disco + una consulta a una base de datos + archivos específicos de estilos y formato).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si deseo quitar los comentarios de un documento, o extraer sólo determinadas cosas adopto la política de usar sólo lo necesario sin inconvenientes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;¡Si deseo que los documentos Word, Excel o PowerPoint sean servicios SOA que compongo a pedido puedo hacerlo!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;La plataforma Open XML es un estándar abierto con acuerdo explícito de uso libre (Covenant not to sue). Es útil navegar a &lt;span lang="EN-US"&gt;&lt;a href="http://www.openxmlcommunity.org/"&gt;&lt;span lang="ES-AR"&gt;http://www.openxmlcommunity.org/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; y observar esta característica en detalle:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpFirst" style="TEXT-INDENT: -18pt"&gt;&lt;span style="font-family:Wingdings;"&gt;&amp;nbsp;&amp;nbsp; ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;Descargar la especificación ECMA completa&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -18pt"&gt;&lt;span style="font-family:Wingdings;"&gt;&amp;nbsp;&amp;nbsp; ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;Estado del proceso ISO&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -18pt"&gt;&lt;span style="font-family:Wingdings;"&gt;&amp;nbsp;&amp;nbsp; ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;Beneficios de la plataforma&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="TEXT-INDENT: -18pt"&gt;&lt;span style="font-family:Wingdings;"&gt;&amp;nbsp;&amp;nbsp; ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;La necesidad de múltiples estándares (avalada por el acuerdo con Novell para soporte de estos estándares y por la disponibilidad de conversores para las aplicaciones Linux de oficina)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="TEXT-INDENT: -18pt"&gt;&lt;span style="font-family:Wingdings;"&gt;&amp;nbsp;&amp;nbsp; ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;No dejen – si son desarrolladores - de seguir este vinculo: &lt;span lang="EN-US"&gt;&lt;a href="http://openxmldeveloper.org/default.aspx"&gt;&lt;span lang="ES-AR"&gt;http://openxmldeveloper.org/default.aspx&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Open XML es – de hecho - un nuevo protocolo que se agrega a la estrategia de &lt;span class="ResaltadoCar"&gt;&lt;span lang="ES"&gt;programar la Web&lt;/span&gt;&lt;/span&gt; iniciada con la utilización del estándar XML.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¿Donde está mayormente la información útil hoy?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Está viajando, está en el cable, con frecuencia multiplicada y replicada.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Ese es el mundo de hoy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¿Cuánto vale la información acumulada de un estudio contable?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Si un contador quiere poner información disponible para ser transformada en XBRL, si un docente toma un examen utilizando Word, si tengo cualquier tipo de información almacenada y definida con claridad…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;¿Copio y pego, imprimo, tomo nota?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES"&gt;Eso era &lt;span class="ResaltadoCar"&gt;antes&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6319731039818317271-4536163432166174636?l=mauricioenlinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mauricioenlinea.blogspot.com/feeds/4536163432166174636/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6319731039818317271&amp;postID=4536163432166174636' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/4536163432166174636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/4536163432166174636'/><link rel='alternate' type='text/html' href='http://mauricioenlinea.blogspot.com/2007/07/el-formato-open-xml-de-microsoft-office.html' title='El formato Open XML de Microsoft Office'/><author><name>Mauricio Grimberg</name><uri>http://www.blogger.com/profile/09100970566531766058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6319731039818317271.post-3554005215039919132</id><published>2007-06-03T08:30:00.000-07:00</published><updated>2007-06-04T06:58:21.350-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user groups microsoft'/><title type='text'>Sólo se trata de las personas I</title><content type='html'>&lt;div style="border: 3pt solid rgb(79, 129, 189); padding: 0in; background: rgb(79, 129, 189) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;h1 style="text-align: center;"&gt;&lt;span style="" lang="ES"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;Sólo se trata de las personas&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;  &lt;/div&gt;  &lt;p class="MsoSubtitle"&gt;&lt;span style="" lang="ES"&gt;Memorias de un miembro de Grupos de Usuarios&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;El Club de Microsoft&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Creo que voy a iniciar esta historia en algún momento del año 1994 cuando en una revista de “computación” &lt;span style=""&gt; &lt;/span&gt;- una palabra casi irrelevante – apareció un aviso que invitaba a formar parte del “Club de Microsoft”: una asociación que prometía brindar un ámbito de información a un costo relativamente bajo (U$S 20).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Se prometían eventos de tecnología con disertantes especializados, descuentos en software y algunas cosas más que francamente no recuerdo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;La persona aquí era, esta vez, Carlos “Billy” Reinoso (aún hoy un eminente en temas de arquitectura de Software y en aquélla época Senior Advisor de Microsoft).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Podría dedicarle este Blog a Billy, alguien con quien tuve poca relación en realidad pero  espectacularmente brillante y con una conversación con un nivel de información e interés pasmoso. Tal vez la persona más brillante que conocí en estos años.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;También la experiencia del Grupos de Usuarios tiene que ver con personas a las cuales admirar o de las cuales aprender, mucho de lo que he tratado de hacer en todos estos años es parecerme a personas como Billy.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Algo bueno de lo relativo a communities es la posibilidad de que estos "bichos" aparezcan juntos en un mismo lugar.&lt;br /&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Me acerqué a la Editorial MP Ediciones (la cual había publicado el aviso y formaba parte de la iniciativa) y Billy fue lo primero importante que vi, parado al frente del salón, contiguo a la imagen del proyector, hablando de ¡Lo nuevo en Access 2.0! :) .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Sentí que no estaba solo y que esas decenas de personas en la oscuridad del auditorio interesadas en aquéllos temas que me interesaban a mí habían pasado en unos minutos a ser casi amigos míos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Definitivamente me encantó y me asocié.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Había salido de la soledad informática y el “club” era muy parecido a lo que había vivido como miembro de Fotoclubes (amantes de la fotografía).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Internet era una palabra desconocida para el gran público, eso vendría poco después.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;En esa época existían los BBS (había uno muy bueno creado por Daniel Seara &lt;span style=""&gt; &lt;/span&gt;- otra persona clave de la galería - &lt;span style=""&gt; &lt;/span&gt;y alguien más cuyo nombre era Diego, creo) y no se comparaban de ningún modo a lo que hoy podríamos llamar “tecnología on-line” pero eran definitivamente precursores.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;En aquélla época reinaba el D.O.S. y una de las discusiones era (sic) “¿Conviene pasar nuestras aplicaciones a Windows?”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;En ese momento comencé a vivir un fenómeno clave para mí de los Grupos de Usuarios: faltar a una reunión era perderse algo para siempre.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;Nos conocíamos y reconocíamos entre nosotros, aprendíamos, nos reíamos y discutíamos de las cosas que “seguramente” sólo a nosotros nos interesaban.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Otra cosa interesante era el acercamiento a la posibilidad de licenciar el software: la primera vez que fui estaba inquieto acerca del tema licencias (yo tenía una licencia de Office pero tan sólo una copia sin licencia de Visual Basic 3, herramienta que me interesaba especialmente).&lt;/p&gt;&lt;p class="MsoNormal"&gt;De la primera reunión salí corriendo a conseguir mi copia (con 3 manuales, guau) de Visual Basic 3 a sólo U$S 120.&lt;/p&gt;&lt;p class="MsoNormal"&gt;En ningún lugar estaba tan bien explicado el acceso a datos en VB3 como en el manual de Data Access que venía en la caja.&lt;br /&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="MsoIntenseEmphasis"&gt;&lt;span style="text-transform: none; font-weight: normal;" lang="ES"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6319731039818317271-3554005215039919132?l=mauricioenlinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mauricioenlinea.blogspot.com/feeds/3554005215039919132/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6319731039818317271&amp;postID=3554005215039919132' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/3554005215039919132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/3554005215039919132'/><link rel='alternate' type='text/html' href='http://mauricioenlinea.blogspot.com/2007/06/solamente-se-trata-de-las-personas-i.html' title='Sólo se trata de las personas I'/><author><name>Mauricio Grimberg</name><uri>http://www.blogger.com/profile/09100970566531766058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6319731039818317271.post-844546688015452810</id><published>2007-06-03T07:36:00.000-07:00</published><updated>2007-06-03T07:49:51.840-07:00</updated><title type='text'>Recomienzo</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;Ayer vi la película “Bobby”, la cual disfruté de principio a fin.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;Me impactó en varios aspectos lo suficiente como para despertar mi necesidad de volver a bloguear.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;En principio la calidad y cantidad de los actores es demoledora (amo a Sharon Stone, sí), el tema es mucho más universal que lo que pudiera parecer (aparece como sumamente norteamericano pero aquí en Argentina sufrimos tanto o más que allí la falta de ideales y de calidad de nuestra clase dirigente, la violencia como estrategia, el racismo y otras bellezas que terminan por arruinarnos).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;Recordé mi experiencia con los Grupos de Usuarios de Microsoft y en qué medida demostramos ciertas carencias hagamos lo que hagamos a la hora de manifestarnos como un conjunto.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;Y finalmente siempre termino en el mismo punto y en el mismo valor: las personas. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;Por eso es que voy a empezar hoy con una serie de notas que voy a titular “Solamente se trata de las personas” y a subtitular, más específicamente, “Memorias de un miembro de Grupos de Usuarios”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6319731039818317271-844546688015452810?l=mauricioenlinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mauricioenlinea.blogspot.com/feeds/844546688015452810/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6319731039818317271&amp;postID=844546688015452810' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/844546688015452810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/844546688015452810'/><link rel='alternate' type='text/html' href='http://mauricioenlinea.blogspot.com/2007/06/recomienzo.html' title='Recomienzo'/><author><name>Mauricio Grimberg</name><uri>http://www.blogger.com/profile/09100970566531766058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6319731039818317271.post-4249308140241513999</id><published>2007-02-13T12:23:00.000-08:00</published><updated>2007-02-04T08:24:32.604-08:00</updated><title type='text'>Primera Entrada</title><content type='html'>Bien, no estoy dispuesto a pensar demasiado en lo que voy a escribir.&lt;br /&gt;Mi idea es escribir combinadamente de diferentes temas que son de mi interés: tecnología .Net, negocios en Internet, cine, algunas reflexiones…&lt;br /&gt;En este momento no quiero dejar de señalar el informe que prevee un crecimiento de hasta 60 cm en el nivel de las aguas del planeta en el próximo siglo.&lt;br /&gt;Este año espero cumplir con el deseo de hacer cosas diferentes.&lt;br /&gt;Ya ha salido mi nota para ASP Today en &lt;a href="http://www.asptoday.com/Content.aspx?id=2444"&gt;http://www.asptoday.com/Content.aspx?id=2444&lt;/a&gt;  con un poco de atraso.&lt;br /&gt;Realmente estoy muy interesado en el cuerpo tecnológico que está generando Microsoft alrededor de Office.&lt;br /&gt;Estaré preparando una nota para Technet sobre Open XML próximamente.&lt;br /&gt;Mañana estaremos presentando a un nuevo grupo de gente la iniciativa MVTech’s que hemos generado conjuntamente con Esteban Fabiani.&lt;br /&gt;Tendremos un invitado de lujo junto a nosotros dos y a Isaac Rubinstein de Consulta Group.&lt;br /&gt;Finalmente luego de tanto tiempo estoy oficializando mi separación definitiva del Microsoft Users Group de Argentina.&lt;br /&gt;Han sido 12 años y he pasado por todos los estadios, me siento orgulloso de lo que he podido hacer y nada nostálgico, por el contrario, es algo finalizado para lo cual ya no tengo entusiasmo desde hace un tiempo.&lt;br /&gt;Ni la tecnología ni la participación han ido por los caminos que yo esperaba, creo que ya vendrá otra gente a continuar nuestra tarea. Todo pasa y todo queda.&lt;br /&gt;Estoy a full dentro de Microsoft Sharepoint y espero concretar una gran aplicación utilizando dicha tecnología unida a Windows Workflow Foundation y Windows Communication Foundation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6319731039818317271-4249308140241513999?l=mauricioenlinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mauricioenlinea.blogspot.com/feeds/4249308140241513999/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6319731039818317271&amp;postID=4249308140241513999' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/4249308140241513999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6319731039818317271/posts/default/4249308140241513999'/><link rel='alternate' type='text/html' href='http://mauricioenlinea.blogspot.com/2007/02/primera-entrada.html' title='Primera Entrada'/><author><name>Mauricio Grimberg</name><uri>http://www.blogger.com/profile/09100970566531766058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
