Nuestro objetivo va a ser diseñar un módulo de exportación de tablas o listas Velneo a un formato de intercambio con otras aplicaciones externas.

Ya hemos visto que existen 2 formatos estandares y abiertos, Open Document y Office Open XML, pero que tienen cierta complejidad en su creación porque no disponemos de herramientas adecuadas en Velneo para la gestión de xml y zip.

Nos vamos a limitar de momento a crear un archivo xml en formato Hoja de Cálculo XML de Excel 2003.

El fichero que obtengamos al final del ejercicio tiene extensión xml y por defecto no se abrirá directamente en la aplicación Excel.

Podemos renombrar el fichero con la extensión xls para que se abra haciendo doble click en el explorador, pero entonces se mostrará un mensaje de advertencia de que el formato no coincide con lo esperado y tenemos la opción de Aceptar o Cancelar.

El mensaje de alerta es un requerimiento de seguridad de Excel que garantiza que el contenido del archivo que se abre coincide con el tipo de extensión especificado en el comando del shell que está intentando abrir el archivo. Podemos cambiar el comportamiento por defecto mediante una rama en el registro de Windows.
Añadir en la rama HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security un valor DWORD ExtensionHardening = 0


Veamos un ejemplo sencillo de un libro con 2 Hojas de Cálculo en formato xml. Copia este código en un editor de texto y lo guardas con extensión xml. En el explorador de archivos selecciona el fichero xml y en el menú de contexto la opción de Abrir con ... Excel 20xx. Comprueba que el fichero se guarda con la codificación de texto adecuada, en este caso UTF-8 pero también puede ser ISO-8859-1.

El espacio de nombres que define los Tags para una Hoja de cálculo se ha asociado al prefijo ss:. Luego veremos que se pueden usar otros espacios de nombres para incluir elementos propios de la aplicación Excel.

Ya intuimos por tanto lo sencillo que es crear un archivo xml a partir de nuestras Tablas o Listas de Velneo.


<?xml version="1.0" encoding="utf-8"?>

<!-- Elemento principal y Namespace del documento xml -->

<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

       <!-- Estilos -->

       <ss:Styles>

               <ss:Style ss:ID="1">

                       <ss:Font ss:Bold="1"/>

               </ss:Style>

               <ss:Style ss:ID="2">

                       <ss:NumberFormat ss:Format="#,##0.000 €"/>

               </ss:Style>

       </ss:Styles>

       <!-- Hojas de Cálculo -->

       <ss:Worksheet ss:Name="HojaDatos_1">

               <!-- Tabla -->

               <ss:Table>

                       <!-- Columnas -->

                       <ss:Column ss:Width="80"/>

                       <ss:Column ss:Width="80"/>

                       <ss:Column ss:Width="80"/>

                       <!-- Filas -->

                       <ss:Row ss:StyleID="1">

                               <!-- Celdas -->

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Nombre</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Apellidos</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Ciudad</ss:Data>

                               </ss:Cell>

                       </ss:Row>

                       <ss:Row>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Pedro</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">García Pérez</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Valencia</ss:Data>

                               </ss:Cell>

                       </ss:Row>

               </ss:Table>

       </ss:Worksheet>

       <ss:Worksheet ss:Name="HojaDatos_2">

               <ss:Table>

                       <ss:Column ss:Width="80"/>

                       <ss:Column ss:Width="80"/>

                       <ss:Column ss:Width="80"/>

                       <ss:Row ss:StyleID="1">

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Ingresos</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Gastos</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="String">Total</ss:Data>

                               </ss:Cell>

                       </ss:Row>

                       <ss:Row ss:StyleID="2">

                               <ss:Cell>

                                       <ss:Data ss:Type="Number">3200</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="Number">1250</ss:Data>

                               </ss:Cell>

                               <ss:Cell>

                                       <ss:Data ss:Type="Number">1950</ss:Data>

                               </ss:Cell>

                       </ss:Row>

               </ss:Table>

       </ss:Worksheet>

</ss:Workbook>



Created with the Personal Edition of HelpNDoc: Free EBook and documentation generator