2.4.692 BrtIndexRowBlock

The BrtIndexRowBlock record specifies the cells that contain data within the range specified by a preceding BrtIndexBlock (section 2.4.689) record. This BrtIndexRowBlock record provides byte indexes into the Worksheet part ABNF (section 2.1.7.62) or Macro Sheet (section 2.1.7.32) part for certain cell records that contain data and are within the range corresponding to the preceding BrtIndexBlock.

The range specified by the BrtIndexBlock is referred to as the block range.

Cell records are records of type BrtCellBlank (section 2.4.316), BrtCellRk (section 2.4.324), BrtCellError (section 2.4.318), BrtCellBool (section 2.4.317), BrtCellReal (section 2.4.323), BrtCellSt (section 2.4.327), BrtCellIsst (section 2.4.321), BrtFmlaString (section 2.4.680), BrtFmlaNum (section 2.4.679), BrtFmlaBool (section 2.4.677), BrtFmlaError (section 2.4.678), or BrtCellRString (section 2.4.325).

This record MUST follow a BrtIndexBlock record which specifies the rows which the block range spans.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

grbitRowMask

ibBaseOffset

...

arrayColbitMask (variable)

...

arraySubBaseOffset (variable)

...

grbitRowMask (4 bytes): An unsigned integer that specifies which rows in the block range contain data. If a row contains data, the bit in grbitRowMask corresponding to the one-based row index is set to 1. For example grbitRowMask with value 0x00000003 corresponds to a block range where the first and second rows contain data.

ibBaseOffset (8 bytes): An unsigned integer that specifies a 64-bit zero-based index to the cell record within the Worksheet part ABNF (section 2.1.7.62) or Macro Sheet (section 2.1.7.32) part for the first cell in the block range which contains data.

arrayColbitMask (variable): An array of 2-byte unsigned integers that specify for every row which ranges of columns (1) contain data in the sheet. Each item in this array corresponds to a row that contains data. The number of items in this array MUST equal the number of bits that are set in grbitRowMask. The sheet is divided into 16 equal ranges of columns (1). Each column (1) range is one row by 1024 columns (1) in size. For every row which has a bit set in grbitRowMask, the bit corresponding to the one-based index to the column (1) range that contains data in at least one of the cells is set in the corresponding item of arrayColbitMask. For example, if arrayColbitMask[0] has the value 0x0002, then at least one cell in the first row and the second column (1) range has data.

arraySubBaseOffset (variable): An array of 4-byte unsigned integers, each of which specifies the zero-based byte index to the beginning of a cell record within the Worksheet part ABNF (section 2.1.7.62) or Macro Sheet (section 2.1.7.32) part, for all cells that contain data within the block range when used in the following formula:

      ibBaseOffset + arraySubBaseOffset[x]

where x is the index of an item in the arraySubBaseOffset array.

The number of elements in arraySubBaseOffset MUST be equal to the total number of bits set in arrayColbitMask.

For example, if arrayColbitMask[0] has the value 0x0002, then ibBaseOffset + arraySubBaseOffset[0] specifies the byte index to the first cell which contains data in the first row of the block range and is in the second column (1) range.