OOXML: Structure - Asbjoedt/CLISC GitHub Wiki
Structure of an OOXML spreadsheet
Source
Parts
- Calculation chain
- Chartsheet
- Comments
- Connections
- Custom property
- Customer XML mappings
- Dialogsheet
- Drawings
- External workbook references
- Metadata
- Pivot table
- Pivot table cache definition
- Pivot table cache records
- Query table
- Shared string table
- Shared workbook revision log
- Shared workbook user data
- Single cell table definition
- Styles
- Table definition
- Volatile dependencies
- Workbook
- Worksheet
Parts shared by OOXML standard
- Embedded package
- Extended file properties
- File properties
- Image
- Theme
Source
Relationships
All parts in a spreadsheet must be referenced in XML by .rels
files. In these files, the <Relationships>
element defines any <relationship>
through the attributes Id
, Type
, Target
and TargetMode
. The relationships may be applied explicitly or implicitly in the spreadsheet.
Source
Data types
- Boolean, serialized in XML as "b"
- Date, serialized in XML as "d"
- Date is stored as a value in the ISO 8601 format, either DateTime or DateTimeOffset.
- Error, serialized in XML as "e"
- InlineString, serialized in XML as "InlineStr"
- Type used if string should not be stored in the SharedStringTable
- Number, serialized in XML as "n"
- SharedString, serialized in XML as "s"
- A deduplicated string value that can be used by multiple cells
- String, serialized in XML as "str"
- Type used when cell contains formula
Embeddings
An OOXML compliant spreadsheet may contain embedded objects/files such as images, 3D objects, another OOXML package or any random binary file using OLE. The embedded object may be rendered visually displaying the actual data or as an clickable icon opening the file in its preferred application.
An OOXML compliant spreadsheet cannot reference an embedded object in another OOXML file.
An object may be referenced without embedding it. The reference may be rendered visually displaying the actual data or as an clickable icon opening the file in its preferred application.
Charts and shapes complying to DrawingML specification are not embedded objects.
Encoding
Conformant OOXML spreadsheets must be encoded in UTF-8 or UTF-16.