2.4.223 RRDChgCell

The RRDChgCell record specifies a change cells revision.


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

rrd (14 bytes)

...

...

...

vt

vtOld

A

B

C

D

E

F

G

H

I

ifmtDisp

J

K

L

reserved2

loc

...

cbOldVal

...

cetxpRst

dxfOld (variable)

...

dxf (variable)

...

rkOld (optional)

numOld (optional)

...

stOld (variable)

...

besOld (optional)

xpeOld (variable)

...

rk (optional)

num (optional)

...

st (variable)

...

bes (optional)

xpe (variable)

...

rrd (14 bytes):  An RRD structure that specifies the revision record information used to track changes in a shared workbook. Because this revision corresponds to a specific sheet, rrd.revt MUST be 0x0008, rrd.fDelAtEdgeOfSort MUST be 0x0000, rrd.revid MUST be greater than or equal to 0, and rrd.tabid MUST NOT be 0xFFFF.

vt (3 bits): An unsigned integer that specifies the type of the new cell contents. MUST be a value from the following table:

Value

Meaning

0x0

New cell is blank.

0x1

New cell contains an RkNumber value.

0x2

New cell contains an Xnum (section 2.5.342) value.

0x3

New cell contains an XLUnicodeRichExtendedString value.

0x4

New cell contains a Bes value.

0x5

New cell contains a CellParsedFormula value.

vtOld (3 bits): An unsigned integer that specifies the type of the old cell contents. MUST be a value from the following table:

Value

Meaning

0x0

Old cell is blank.

0x1

Old cell contains an RkNumber value.

0x2

Old cell contains an Xnum value.

0x3

Old cell contains an XLUnicodeRichExtendedString value.

0x4

Old cell contains a Bes value.

0x5

Old cell contains a CellParsedFormula value.

A - f123Prefix (1 bit): A bit that specifies whether prefix characters are present in the cell. Possible prefix characters include single quotation mark (0x27), double quotation mark (0x22), caret (0x5E), and backslash (0x5C).

B - unused (1 bit): Undefined and MUST be ignored.

C - fOldFmt (1 bit): A bit that specifies whether there is old formatting information available for this cell. If fOldFmt is 0x1 and fOldFmtNull is 0x0, dxfOld MUST exist.

D - fOldFmtNull (1 bit): A bit that specifies whether the old formatting information is empty. This value MUST be ignored if fOldFmt is 0. If fOldFmt is 0x1 and fOldFmtNull is 0x0, dxfOld MUST exist. If fOldFmt is 0x1 and fOldFmtNull is 0x1, old formatting information is available for the cell, but the old formatting information is not written to disk and dxfOld MUST NOT exist.

E - fXfDxf (1 bit): A bit that specifies that the affected cells will have their format reset to the format defined by the current cell style before applying any format from dxf, if present.

F - fStyXfDxf (1 bit): A bit that specifies that the format of the cell will be cleared before applying any format from dxf, if present.

G - fDxf (1 bit): A bit that specifies whether there was a formatting change for this cell. If fDxf is 0x1 and fDxfNull is 0x0, dxf MUST exist.

H - fDxfNull (1 bit): A bit that specifies whether the new formatting information is empty. This value MUST be ignored if fDxf is 0. If fDxf is 0x1 and fDxfNull is 0x0, dxf MUST exist. If fDxf is 0x1 and fDxfNull is 0x1, this means that there was a formatting change for this cell, but the dxf describing the formatting change MUST NOT exist.

I - reserved1 (2 bits): MUST be zero, and MUST be ignored.

ifmtDisp (8 bits): An unsigned integer that specifies the identifier of the number format to use to display the new cell contents. MUST be a value from the following table. For more information about how format strings are interpreted, see [ECMA-376] Part 4: Markup Language Reference, section 3.8.31.

Value

Description

Positive Value Format

Negative Value Format

Zero Format

0x0000

Automatic

0

-0

0

0x0004

Number, two decimal places, use the 1000 separator (,)

#,##0.00

-#,##0.00

0.00

0x000B

Currency, two decimal places, use parentheses for negative values

$#,##0.00

($#,##0.00)

$0.00

0x000D

Percentage, zero decimal places

0%

-0%

0%

0x000E

Percentage, two decimal places

0.00%

-0.00%

0.00%

0x000F

Scientific

0.00E+00

-0.00E+00

0.00E+00

0x0010

Engineering

##0.0E+0

-##0.0E+0

0.0E+0

0x0011

Fraction, up to one digit numerator and denominator

# ?/?

-# ?/?

0

0x0012

Fraction, up to two digit numerator and denominator

# ??/??

-# ??/??

0

0x0013

Date (MM-DD-YY)

mm-dd-yy

mm-dd-yy

0x0015

Date (DD-MMM)

d-mmm

d-mmm

0x0017

Time (H:MM AM/PM)

h:mm AM/PM

h:mm AM/PM

0x001B

Date/Time, 24 hour format (M/D/YY H:MM)

m/d/yy h:mm

m/d/yy h:mm

0x0022

Accounting (currency with decimal point aligned, and centered minus-sign for 0-value), two decimal places, use currency symbol

_($* #,##0.00_)

_($* #,##0.00)

_($* "-" ??_)  

J - fPhShow (1 bit): A bit that specifies whether the new cell contains a phonetic string.

K - fPhShowOld (1 bit): A bit that specifies whether the old cell contains a phonetic string.

L - fEOLFmlaUpdate (1 bit): A bit that specifies whether the new cell contents were changed because of an adjustment to the formula.

reserved2 (5 bits): MUST be zero, and MUST be ignored.

loc (4 bytes): An RgceLoc structure that specifies the location of the cell change revision.

cbOldVal (4 bytes): An unsigned integer that specifies the size of the old cell contents. If cbOldVal is greater than 0, the old cell contents immediately follow the cetxpRst field, then it is followed by the new cell contents. MUST be a value from the following table based on the value of vtOld:

vtOld

cbOldVal

0x0

MUST be 0x00000000.

0x1

MUST be 0x00000004.

0x2

MUST be 0x00000008.

0x3

MUST be equal to the size of the old XLUnicodeRichExtendedString. The size is calculated assuming all characters are double-byte characters. That is, if XLUnicodeRichExtendedString.fHighByte is 1, the calculation is made by using the size of XLUnicodeRichExtendedString.

0x4

MUST be 0x00000002.

0x5

MUST be greater than or equal to 0x00000018.

cetxpRst (2 bytes): An unsigned integer that specifies the number of RRDRstEtxp records that follow this record.

dxfOld (variable): A DXFN structure that specifies the differential formatting for the old cell contents. This field MUST exist if fOldFmt is 0x1 and fOldFmtNull is 0x0.

dxf (variable): A DXFN structure that specifies the differential formatting for the new cell contents. This field MUST exist if fDxf is 0x1 and fDxfNull is 0x0.

rkOld (4 bytes): An RkNumber structure that specifies the old cell contents. This field MUST exist if and only if cbOldVal is greater than 0 and vtOld is 0x1.

numOld (8 bytes): An Xnum value that specifies the old cell contents. This field MUST exist if and only if cbOldVal is greater than 0 and vtOld is 0x2.

stOld (variable): An XLUnicodeRichExtendedString structure that specifies the old cell contents. This field MUST exist if and only if cbOldVal is greater than 0 and vtOld is 0x3.

besOld (2 bytes): A Bes structure that specifies the old cell contents. This field MUST exist if and only if cbOldVal is greater than 0 and vtOld is 0x4.

xpeOld (variable): A CellParsedFormula structure that specifies the old cell contents. This field MUST exist if and only if cbOldVal is greater than 0 and vtOld is 0x5.

rk (4 bytes): An RkNumber value that specifies the new cell contents. This field MUST exist if and only if vt is 0x1.

num (8 bytes): An Xnum value that specifies the new cell contents. This field MUST exist if and only if vt is 0x2.

st (variable): An XLUnicodeRichExtendedString structure that specifies the new cell contents. This field MUST exist if and only if vt is 0x3.

bes (2 bytes): A Bes structure that specifies the new cell contents. This field MUST exist if and only if vt is 0x4.

xpe (variable): A CellParsedFormula structure that specifies the new cell contents. This field MUST exist if and only if vt is 0x5.