diff --git a/README.md b/README.md index 41a11e2..af68f44 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/qpw/README.md b/qpw/README.md new file mode 100644 index 0000000..a47d7b2 --- /dev/null +++ b/qpw/README.md @@ -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.