Ejemplo de paquete XLSX
Un paquete XLSX, denominado SpreadsheetML, contiene 2 items principales, package-relationship item y content-type item.
El package-relationship item se encuentra físicamente en el archivo /_rels/.rels
El content-type item se encuentra físicamente en el archivo [Content_Types].xml
El package-relationship item contiene las relaciones implícitas con los siguientes destinos:
- Parte workbook
- Parte properties (Application-Defined File Properties, Core File Properties, and Custom File Properties)
Veamos el mínimo exigido para conformar un paquete SpreadsheetML tal como lo define ECMA-376.
Primero, debemos definir los tipos de contenido (content types) para la parte con las relaciones (relationship parts), la parte con el libro de trabajo (workbook part) y al menos una parte con la hoja de trabajo (sheet part). Físicamente localizado en el archivo /[Content_Types].xml del paquete:
/[Content_Types].xml
<Types xmlns="…">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
<Override PartName="/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />
<Override PartName="/sheet1.xml" ContentType="application/vnd.openxmlformatsofficedocument.spreadsheetml.worksheet+xml" />
</Types>
A continuación, debemos definir la relación a nivel de paquete con el libro de trabajo workbook, físicamente localizado en el archivo /_rels/.rels del paquete:
/_rels/.rels
<Relationships xmlns="…">
<Relationship Id="rId1" Type=http://purl.oclc.org/ooxml/officeDocument/relationships/officeDocument" Target="workbook.xml" />
</Relationships>
El mínimo contenido para un libro de trabajo workbook, localizado físicamente en el archivo /workbook.xml del paquete, es el siguiente:
/workbook.xml
<workbook xmlns="…" xmlns:r="…">
<sheets>
<sheet name="1" sheetId="1" r:id="rId1" />
</sheets>
</workbook>
Definimos a nivel de libro de trabajo la relación con la hoja de trabajo sheet, localizada físicamente en el archivo /_rels/workbook.xml.rels del paquete:
/_rels/workbook.xml.rels
<Relationships xmlns="…">
<Relationship Id="rId1" Type="http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet" Target="sheet1.xml" />
</Relationships>
Finalmente, incluímos el mínimo contenido para una hoja de trabajo sheet, localizado físicamente en el archivo /sheet1.xml del paquete:
/sheet1.xml
<worksheet xmlns="…" xmlns:r="…">
<sheetData />
</worksheet>
Ejemplo de documento SpreadsheetML
Consideremos un documento SpreadsheetML que contiene un libro de trabajo workbook con tres hojas de trabajo sheets.
A continuación tenemos la estructura jerárquica de la carpeta que tendremos que comprimir en un archivo ZIP y cambiar a la extensión xlsx.
/_rels/.rels Package-relationship item
/[Content_Types].xml Content-type item
/docProps/app.xml Application-Defined File Properties part
/docProps/core.xml Core File Properties part
/xl/workbook.xml Workbook part
/xl/_rels/workbook.xml.rels Part-relationship item
/xl/calcChain.xml Calculation Chain part
/xl/sharedStrings.xml Shared String Table part
/xl/styles.xml Styles part
/xl/volatileDependencies.xml Volatile Dependencies part
/xl/theme/theme1.xml Theme part
/xl/worksheets/sheet1.xml Worksheet parts
/xl/worksheets/sheet2.xml
/xl/worksheets/sheet3.xml
Observad que la parte de libro de trabajo workbook (guardada en /xl/workbook.xml) contiene su propio item de relaciones Part-relationship item (/xl/_rels/workbook.xml.rels)
El item con las relaciones a nivel de paquete package-relationship item (guardado en /_rels/.rels) contiene lo siguiente:
<Relationships xmlns="…">
<Relationship Id="rId3" Type="http://…/extended-properties" Target="docProps/app.xml"/>
<Relationship Id="rId2" Type="http://…/core-properties" Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://…/officeDocument" Target="xl/workbook.xml"/>
</Relationships>
Creado con el Personal Edition de HelpNDoc: Ventajas de las herramientas de creación de documentación de ayuda