This commit is contained in:
SheetJS 2022-07-19 19:31:57 -04:00
parent e7bc6809cd
commit efbb38f80e
2 changed files with 50 additions and 0 deletions

View File

@ -4,6 +4,7 @@ Various spreadsheet file format notes.
- [Data Interchange Format (DIF)](/dif/README.md)
- [Lotus WK# formats](/lotus/README.md)
- [Quattro Pro QPW format](/qpw/README.md)
- [Symbolic Link (SLK/SYLK)](/sylk/README.md)
- [XLSB Short Records](/xlsb_short_records/README.md)
- [Number Formats](/ssf/README.md)

49
qpw/README.md Normal file
View File

@ -0,0 +1,49 @@
# Quattro Pro File Format
QPW workbooks are structurally similar to other binary formats like Lotus WK\#
### CFB Container
Modern QPW files use the same CFB container as XLS.
The actual stream name has changed over the years but the typical names are
`PerfectOffice_MAIN` and `NativeContent_MAIN`.
## Stream Structure
Like Lotus, the QPW stream consists of an array of records with 16-bit lengths
and 16-bit record types.
For QPW streams, the BOF version field typically encodes "QPW" in ASCII.
### Record Organization
Each file is divided into a notebooks (typically one notebook per file). Each
notebook is divided into a series of worksheets.
Each worksheet is divided into a series of columns and data cells are stored
within each column block.
Each part of the file is wrapped with beginning and ending records. The end
record type is typically one larger than the beginning record type.
| Part | Begin Type | End Type |
|:----------|-----------:|---------:|
| File | `0x0001` | `0x0002` |
| Notebook | `0x0401` | `0x0402` |
| Worksheet | `0x0601` | `0x0602` |
| Column | `0x0A01` | `0x0A02` |
### Data Records
Record `0x0407` encodes the shared string table, scoped to the notebook.
Record `0x0C01` encodes multiple cells, similar to XLS `MulRk`. It is contained
in a column block.
## Resources
Notes were included as part of the WordPerfect Office SDK. In older versions of
WordPerfect Office Suite, the SDK was included as part of the Professional
Edition (but not the standard edition). For recent releases, the only way to
obtain the documentation is to inquire with Corel Corporation.