Worksheet Record Types in Opcode Order
The following section lists all record types in opcode order. It gives a specification and byte-by-byte breakdown of each type. Note that Excel terminology refers to spreadsheets or worksheets as "documents."
DIMENSIONS 00h 0d
Record Type: DIMENSIONS
Description: Entire dimensions or range of a spreadsheet
Record Body Length: 8 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 First row
2-3 Last row plus 1
4-5 First column
6-7 Last column plus 1
Note: The last row and column in the record are both one greater than the highest numbered occupied ones.
BLANK 01h 1d
Record Type: BLANK
Description: Cell with no formula or value
Record Body Length: 7 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row
2-3 Column
4-6 Cell attributes (rgbAttr) (Table 2-3)
INTEGER 02h 2d
Record Type: INTEGER
Description: Constant unsigned integer
Record Body Length: 9 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row
2-3 Column
4-6 Cell attributes (rgbAttr) (Table 2-3)
7-8 Unsigned integer value (w)
NUMBER 03h 3d
Record Type: NUMBER
Description: Constant floating point number
Record Body Length: 15 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row
2-3 Column
4-6 Cell attributes (rgbAttr) (Table 2-3)
7-14 Floating point number value (IEEE format, see Appendix A)
LABEL 04h 4d
Record Type: LABEL
Description: Constant string
Record Body Length: 8 to 263 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row
2-3 Column
4-6 Cell attributes (rgbAttr) (Table 2-3)
7 Length of string
8-263 ASCII string, 0 to 255 bytes long
BOOLERR 05h 5d
Record Type: BOOLERR
Description: Boolean constant or error value
Record Body Length: 9 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row
2-3 Column
4-6 Cell attributes (rgbAttr) (Table 2-3)
7 Boolean or error value
Boolean
true 1
false 0
Error
#NULL! 0
#DIV/0! 7
#VALUE! 0Fh
#REF! 17h
#NAME? 1Dh
#NUM! 24h
#N/A 2Ah
8 Specifies Boolean or error
Boolean 0
Error 1
FORMULA 06h 6d
Record Type: FORMULA
Description: Name, size, and contents of a formula cell
Record Body Length: 17-272 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row
2-3 Column
4-6 Cell attributes (rgbAttr) (see Table 2-3)
7 Current value of formula (IEEE format, see Appendix A)
15 Recalc flag
16 Length of parsed expression
17 Parsed expression
If a formula must be recalculated whenever it is loaded, the recalc flag (byte 15) must be set. Any nonzero value is a set recalc flag. However, a flag value of 3 indicates that the cell is a part of a matrix, and the entire matrix must be recalculated. Bytes 7 through 14 may contain a number, a Boolean value, an error code, or a string. The following tables apply.
Case 1: Bytes 7 - 14 contain a Boolean value.
Byte Number Byte Description Contents (hex)
7 otBool 1
8 Reserved 0
9 Boolean value
10-12 Reserved 0
13-14 fExprO FFFFh
Case 2: Bytes 7 - 14 contain an error code.
Byte Number Byte Description Contents (hex)
7 otErr 2
8 Reserved 0
9 error code
10-12 Reserved 0
13-14 fExprO FFFFh
Case 3: Bytes 7 - 14 contain a string.
Byte Number Byte Description Contents (hex)
7 otString 0
8-12 Reserved 0
13-14 fExprO FFFFh
The string value itself is not stored in the field, but rather in a separate record of the STRING type.
STRING 07h 7d
Record Type: STRING
Description: Value of a string in a formula
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Length of the string
1-256 (max) The string itself
The STRING record appears immediately after the FORMULA record that evaluates to the string, unless the formula is in an array. In that case, the string record immediately follows the ARRAY record.
ROW 08h 8d
Record Type: ROW
Description: Specifies a spreadsheet row
Record Body Length: 16 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row number
2-3 First defined column in the row
4-5 Last defined column in the row plus 1
6-7 Row height
8-9 RESERVED 0
10 Default cell attributes byte
Default attributes 1
Not default attributes 0
11-12 Offset to cell records for this row
13-15 Cell attributes (rgbAttr) (see Table 2-3)
BOF 09h 9d
Record Type: BOF
Description: Beginning of file
Record Body Length: 4 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Version number
Excel 2
Multiplan 3
2-3 Document type
worksheet 10h
chart 20h
macro sheet 40h
If bit 8 of the version number byte pair is high (mask with 0100h to find out), the BIFF file is a Multiplan document.
EOF 0Ah 10d
Record Type: EOF
Description: End of file
Record Body Length: 0 bytes
The EOF record is the last one in a BIFF file. It always takes the form 0A000000h.
INDEX 0Bh 11d
Record Type: INDEX
Description: Contains pointers to other records in the BIFF file, and defines the range of rows used by the document. It is used to simplify searching a file for a particular cell or name.
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-3 Absolute file position of first NAME record
4-5 First row that exists
6-7 Last row that exists plus 1
8-on Array of absolute file positions of the
blocks of ROW records.
The INDEX record is optional. If present, it must immediately follow the FILEPASS record. IF there is no FILEPASS record, it must follow the BOF record.
CALCCOUNT 0Ch 12d
Record Type: CALCCOUNT
Description: Specifies the iteration count
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Iteration Count
CALCMODE 0Dh 13d
Record Type: CALCMODE
Description: Specifies the calculation mode
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Calculation mode
Manual 0
Automatic 1
Automatic, no tables -1
PRECISION 0Eh 14d
Record Type: PRECISION
Description: Specifies precision of calculations for document
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Document precision
precision as displayed 0
full precision 1
REFMODE 0Fh 15d
Record Type: REFMODE
Description: Specifies location reference mode
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Reference mode
R1C1 mode 0
A1 mode 1
DELTA 10h 16d
Record Type: DELTA
Description: Maximum change for an iterative model
Record Body Length: 8
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-7 Maximum change (IEEE format, see Appendix A)
ITERATION 11h 17d
Record Type: ITERATION
Description: Specifies whether iteration is on
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Iteration flag
Iteration off 0
Iteration on 1
PROTECT 12h 18d
Record Type: PROTECT
Description: Specifies whether the document is protected with a document password
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Document protection
Not protected 0
Protected 1
PASSWORD 13h 19d
Record Type: PASSWORD
Description: Contains encrypted document password
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Encrypted password
HEADER 14h 20d
Record Type: HEADER
Description: Specifies header string that appears at the top of every page when the document is printed
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Length of string (bytes)
1-on Header string (ASCII)
FOOTER 15h 21d
Record Type: FOOTER
Description: Specifies footer string that appears at the bottom of every page when the document is printed
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Length of string (bytes)
1-on Footer string (ASCII)
EXTERNCOUNT 16h 22d
Record Type: EXTERNCOUNT
Description: Specifies the number of documents referenced externally by an Excel document
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Number of externally referenced documents
EXTERNSHEET 17h 23d
Record Type: EXTERNSHEET
Description: Specifies a document that is referenced externally by the Excel file. There must be an EXTERNSHEET record for every external file counted by the EXTERNCOUNT record.
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Length of document name
1-on Document name
The document name may be encoded. If so, its first character will be 0, 1 or 2.
0 indicates the document name is an external reference to an empty sheet.
1 indicates the document name has been translated to a less sys-tem-dependent name. This feature is valuable for documents intended for a non-DOS environment.
2 indicates that the externally referenced document is, in fact, the current document.
NAME 18h 24d
Record Type: NAME
Description: User-defined name on the document
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Name attribute
Only bits 1 and 2 are ever nonzero.
Bit 1 is 1 if the name is a function or
command name on a macro sheet.
Bit 2 is 1 if the name definition
includes:
* A function that returns an array, such
as TREND or MINVERSE
* A ROW or COLUMN function
* A user-defined function
Name attribute
Meaningful only if bit 1 of
byte 0 is 1 (the name is a function or
command name). Only bits 0 and 1 are
ever nonzero.
Bit 0 is 1 if the name is a function.
Bit 1 is 1 if the name is a command.
2 Keyboard shortcut. Meaningful only if the
name is a command.
If no keyboard shortcut 0
If shortcut exists ASCII value
3 Length of the name text
4 Length of the name's definition
5-? Text of the name
?-? Name's definition (parsed) in internal
compressed format
? Length of the name's definition (duplicate)
All NAME records should appear together in a BIFF file.
WINDOW PROTECT 19h 25d
Record Type: WINDOW PROTECT
Description: Specifies whether a document's windows are protected
Record Body Length: 2 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Window protect flag
Not protected 0
Protected 1
VERTICAL PAGE BREAKS 1Ah 26d
Record Type: VERTICAL PAGE BREAKS
Description: Lists all column page breaks
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Number of page breaks
2-on Array containing a 2-byte integer for each
column that immediately follows a column page
break. Columns must be sorted in ascending
order.
HORIZONTAL PAGE BREAKS 1Bh 27d
Record Type: HORIZONTAL PAGE BREAKS
Description: Lists all row page breaks
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Number of page breaks
2-on Array containing a 2-byte integer for each row that immediately follows a row page
break. Rows must be sorted in ascending
order.
NOTE 1Ch 28d
Record Type: NOTE
Description: Note associated with a cell
Record Body Length: Variable, maximum of 254
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row of the note
2-3 Column of the note
4-5 Length of the note part of the record
6-on Text of the note
Notes longer than 2048 characters must be split among multiple records. All except the last one will contain 2048 text characters. The last one will contain the overflow.
SELECTION 1Dh 29d
Record Type: SELECTION
Description: Specifies which cells are selected in a pane of a split window. It can also specify selected cells in a window that is not split.
Record Body Length: Variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Number of pane
bottom right 0
top right 1
bottom left 2
top left 3
no splits 3
1-2 Row number of the active cell
3-4 Column number of the active cell
5-6 Reference number of the active cell
7-8 Number of references in the selection
9-on Array of references
Each reference in the array consists of 6 bytes arranged as follows:
Byte Number Byte Description
0-1 First row in the reference
2-3 Last row in the reference
4 First column in the reference
5 Last column in the reference
FORMAT 1Eh 30d
Record Type: FORMAT
Description: Describes a picture format in a document. All FORMAT records must appear together in a BIFF file.
Record Body Length: Variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Length of format string
1-on Picture format string
FORMATCOUNT 1Fh 31d
Record Type: FORMATCOUNT
Description: The number of standard FORMAT records in the file. There are 21 different format records.
Record Body Length: 2 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Number of built in format records.
COLUMN DEFAULT 20h 32d
Record Type: COLUMN DEFAULT
Description: Specifies default cell attributes for cells in a particular column. The default value is overriden for individual cells by a subsequent explicit definition.
Record Body Length: Variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Column number of first column for which a default cell is being defined
2-3 Column number of last column for which a default cell is being defined, plus 1.
4-on Array of cell attributes
ARRAY 21h 33d
Record Type: ARRAY
Description: Describes a formula entered into a range of cells as an array. Occurs immediately after the FORMULA record for the upper left corner of the array.
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 First row of the array
2-3 Last row of the array
4 First column of the array
5 Last column of the array
6 Recalculation flag
Array is calculated 0
Needs to be calculated nonzero
7 Length of parsed expression
8-on Parsed expression (array formula)
1904 22h 34d
Record Type: 1904
Description: Specifies date system used on this spreadsheet
Record Body Length: 2 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Specifies date system used
1904 date system 1
anything else 0
EXTERNNAME 23h 35d
Record Type: EXTERNNAME
Description: An externally referenced name, referring to a work-sheet or macro sheet or to a DDE topic. All EXTERNNAME records associated with a supporting document must
directly follow its EXTERNSHEET record.
Record Body Length: Variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Length of the name
1-on The name
When EXTERNNAME references a DDE topic, Excel may append its most recent values to the EXTERNNAME record. If the record becomes too long to be contained in a single record, it is split into multiple records, with CONTINUE records holding the excess.
COLWIDTH 24h 36d
Record Type: COLWIDTH
Description: Sets column width for a range of columns
Record Body Length: 3 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 First column in the range
1 Last column in the range
2-3 Column width in units of 1/256th of a character
DEFAULT ROW HEIGHT 25h 37d
Record Type: DEFAULT ROW HEIGHT
Description: Specifies the height of all rows that are not defined explicitly
Record Body Length: 2 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Default row height in units of 1/20th of a point
LEFT MARGIN 26h 38d
Record Type: LEFT MARGIN
Description: Specifies the left margin in inches when the document is printed
Record Body Length: 8 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-7 Left margin (IEEE format, see Appendix A)
RIGHT MARGIN 27h 39d
Record Type: RIGHT MARGIN
Description: Specifies the right margin in inches when the document is printed
Record Body Length: 8 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-7 Right margin (IEEE format, see Appendix A)
TOP MARGIN 28h 40d
Record Type: TOP MARGIN
Description: Specifies the top margin in inches when the document is printed
Record Body Length: 8 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-7 Top margin (IEEE format, see Appendix A)
BOTTOM MARGIN 29h 41d
Record Type: BOTTOM MARGIN
Description: Specifies the bottom margin in inches when the document is printed
Record Body Length: 8 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-7 Bottom margin (IEEE format, see Appendix A)
PRINT ROW HEADERS 2Ah 42d
Record Type: PRINT ROW HEADERS
Description: Flag determines whether to include row and column headers on printout of document
Record Body Length:
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Row and Column Header Print Flag
Do not print headers 0
Print headers 1
PRINT GRIDLINES 2Bh 43d
Record Type: PRINT GRIDLINES
Description: Flag determines whether to print gridlines on print-out of document
Record Body Length: 2
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Gridline Print Flag
Do not print gridlines 0
Print gridlines 1
FILEPASS 2Fh 47d
Record Type: FILEPASS
Description: Specifies a file password. If this record is present, the rest of the file is encrypted. The file password specified here is distinct from the document password
specified by the PASSWORD record. If present, the FILEPASS record must immediately follow the BOF record.
Record Body Length: ?
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-on ?
FONT 31h 49d
Record Type: FONT
Description: Describes an entry in the document's font table. A document may have up to 4 different fonts, numbered 0 to 3. Font records are written in the font table in the
order in which they are encountered in the file.
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (binary)
0-1 Height of the font (in 1/20ths of a point)
2-3 Font Attributes
First byte (reserved) 00000000b
Second byte
Bit 0 - bold 1b
Bit 1 - italic 1b
Bit 2 - underline 1b
Bit 2 - strikeout 1b
Bits 4-7 (reserved) 0000b
4 Length of font name
5-? Font name
FONT2 32h 50d
Record Type: FONT2
Description: System specific information about the font defined in the previous FONT record. The FONT2 record is option-al.
Record Body Length: Variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-on ?
TABLE 36h 54d
Record Type: TABLE
Description: Describes a one-input row or column table created through the Data Table command
Record Body Length: 12 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 First row of the table
2-3 Last row of the table
4 First column of the table
5 Last column of the table
6 Recalculation flag
Table is recalculated 0
Not recalculated nonzero
7 Row or column input table flag
Column input table 0
Row input table 1
8-9 Row of the input cell
10-11 Column of the input cell
The area given by the first and last rows and columns does not include the outer row or column, which contains table formulas or input values. If the input cell is a deleted reference, the row of the input cell, given by the bytes at offset 8 and 9, is -1.
TABLE2 37h 55d
Record Type: TABLE2
Description: Describes a two-input table created by the Data Table command. It is the same as the TABLE record, except there is no distinction between a row input table and a
column input table, there are two input cells rather than one, and either may have a value of -1, indicating a deleted reference.
Record Body Length: 16 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 First row of the table
2-3 Last row of the table
4 First column of the table
5 Last column of the table
6 Recalculation flag
Table is calculated 0
Needs recalculation nonzero
7 RESERVED - must be zero 0
8-9 Row of the row input cell
10-11 Column of the row input cell
12-13 Row of the column input cell
14-15 Column of the column input cell
CONTINUE 3Ch 60d
Record Type: CONTINUE
Description: Continuation of FORMULA, ARRAY, or EXTERNNAME records that are too long to fit in a single record.
Record Body Length: variable
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-on Parsed expression
WINDOW1 3Dh 61d
Record Type: WINDOW1
Description: Basic window information. Locations are relative to the upper left corner of the Microsoft Windows desktop, and are measured in units of 1/20th of a point.
Record Body Length: 9 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Horizontal position of the window
2-3 Vertical position of the window
4-5 Width of the window
6-7 Height of the window
8 Hidden attribute
Window is not hidden 0
Window is hidden 1
If you do not include a WINDOW1 record in your BIFF file, Excel will create a default
window in your document.
WINDOW2 3Eh 62d
Record Type: WINDOW2
Description: Advanced window information. The WINDOW2 record is optional. If present,
it must immediately follow the WINDOW1 record.
Record Body Length: 14 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0 Display Formulas
Display values 0
Display formulas 1
1 Display Grid
Do not display gridlines 0
Display gridlines 1
2 Display Row and Column Headers
Do not display headers 0
Display headers
3 Freeze window panes
Do not freeze panes 0
Freeze panes 1
4 Display zero values
Suppress display 0
Display zero values 1
5-6 Top row visible in the window
7-8 Leftmost column visible in the window
9 Row/column header and gridline color
Specified in next four bytes 0
Use window's default 1
foreground color.
10-13 Row/column headers and gridline color (RGB)
BACKUP 40h 64d
Record Type: BACKUP
Description: Specifies whether a BIFF file should be backed up
Record Body Length: 2 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Backup flag
Do not back up 0
Back up 1
PANE 41h 65d
Record Type: PANE
Description: Describes the number and position of unfrozen panes in a window. Panes are created by horizontal and vertical splits, which are measured in units of 1/20th of a point.
Record Body Length: 9 bytes
Record Body Byte Structure:
Byte Number Byte Description Contents (hex)
0-1 Horizontal position of the split, zero if none
2-3 Vertical position of the split, zero if none
4-5 Top row visible in the bottom pane
6-7 Leftmost column visible in the right pane
8 Pane number of the active pane