SheetJS File Format Notes

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.