4.7 Cell Table and Row Blocks
4.7.3 Cell Block
Definition: Cell Block
Cell Block is in most cases simply a single cell record. In BIFF2 it may be preceded by an IXFE record 
containing the index to an XF record.
Structure of a common Cell Block in a Row Block, BIFF2-BIFF8:
○ IXFE
Index to XF (BIFF2 only, 
5.62)
BLANK
5.7
BOOLERR
5.10
INTEGER
5.60 (BIFF2 only)
LABEL
5.63 (BIFF2-BIFF8)
LABELSST
5.65 (BIFF8 only)
MULBLANK
5.68 (BIFF5-BIFF8)
MULRK
5.69 (BIFF5-BIFF8)
NUMBER
5.71
RK
5.87 (BIFF3-BIFF8)
RSTRING
5.89 (BIFF5-BIFF8)
If the cell contains a formula, there may occur additional records for array formulas (
4.8), shared formulas (
4.8), 
multiple operation tables (
4.9), and/or the result string.
Structure of a Formula Cell Block in a Row Block, BIFF2-BIFF8:
○ IXFE
Index to XF (BIFF2 only, 
5.62)
● FORMULA
5.50
ARRAY
Top left cell of an array formula (
5.4)
SHAREDFMLA
Top left cell of a shared formula (BIFF5-BIFF8, 
5.94)
DATATABLE
Top left cell of a multiple operations table (
5.24)
DATATABLE2
Top left cell of a multiple operations table (
5.25)
○ STRING
Formula cell returns a string value (
5.102)
91
Convert pdf to jpeg - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
best pdf to jpg converter online; convert pdf file to jpg online
Convert pdf to jpeg - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
batch pdf to jpg; change pdf to jpg image
4 Worksheet/Workbook Stream
4.7.4 Finding Cells in a Row Block
Finding Cells in a Row Block (BIFF2-BIFF4)
In BIFF2-BIFF4, the ROW record contains a stream offset, pointing to the cell records of the respective row. The offset 
value of the first ROW record in a Row Block represents the difference between the start of the second ROW record and 
the first cell record. The offset of the second ROW record contains the size of all cell records of the first row, and so on. 
If a row does not contain any cells, the offset to the cells in the next filled row is stored.
Example: A Row Block contains one cell per row in the rows 10, 11, and 12. Row 13 is not used, the height of 
row 14 is changed (but it does not contain a cell). Row 15 contains a cell again. In this example, the first column 
shows the absolute stream position of each record.
048E
H
ROW
Row = 10, offset = 0050
H
04A2
H
ROW
Row = 11, offset = 000E
H
04B6
H
ROW
Row = 12, offset = 0012
H
04CA
H
ROW
Row = 14, offset = 000E
H
(no record for row 13)
04DE
H
ROW
Row = 15, offset = 0000
H
04F2
H
RK
Address = A10
0500
H
NUMBER
Address = A11
0512
H
RK
Address = A12
0520
H
NUMBER
Address = A15
The base position for the calculation of all cell record positions is the start of the second ROW record, 04A2
H
This is for convenience: After reading the first ROW record it is possible to calculate the position of the first cell 
record, using the current stream position and the offset contained in the ROW record.
The first ROW record describes row 10. The cell records of this row start in 04A2
H
+ 0050
H
= 04F2
H
.
The second ROW record describes row 11. The cell records start in 04A2
H
+ 0050
H
+ 000E
H
= 0500
H
.
The third ROW record describes row 12. The cell records of row 12 start in
04A2
H
+ 0050
H
+ 000E
H
+ 0012
H
= 0512
H
.
The fourth ROW record describes row 14. It does not contain cell records. So the offset points to the cells of 
the next used row (row 15).
The stream position is 04A2
H
+ 0050
H
+ 000E
H
+ 0012
H
+ 000E
H
= 0520
H
.
The last ROW record record describes row 15. Because for row 14 the stream position for row 15 is calculated 
already, this ROW record contains the offset 0000
H
. The stream position evaluates to the correct value 
04A2
H
+ 0050
H
+ 000E
H
+ 0012
H
+ 000E
H
+ 0000
H
= 0520
H
.
If the size of all cell records of a row exceeds FFFF
H
, the respective ROW record will contain the offset 0000
H
. From 
this row on, the offsets cannot be used anymore to calculate stream positions.
92
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
convert pdf image to jpg; convert pdf pages to jpg online
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
convert pdf pages to jpg; change pdf into jpg
4.7 Cell Table and Row Blocks
Finding Cells in a Row Block (BIFF5-BIFF8)
In BIFF5-BIFF8 the DBCELL record (
5.29) follows the cell records and contains exactly the stream offsets which the 
ROW records would contain in BIFF2-BIFF4. In the DBCELL record this offset list is lead by an offset to the first 
ROW record in this Row Block. This offset is a positive value, although it points backwards to an earlier stream 
position. While no record would occur in BIFF2-BIFF4 for empty Row Blocks, in BIFF5-BIFF8 a DBCELL record is 
written for each and every Row Block.
Example: A Row Block contains one cell per row in the rows 10, 11, and 12. Row 13 is not used, the height of 
row 14 is changed (but it does not contain a cell). Row 15 contains a cell again. In this example, the first column 
shows the absolute stream position of each record.
07B2
H
ROW
Row = 10 (Record size with header = 0014
H
)
07C6
H
ROW
Row = 11
07DA
H
ROW
Row = 12
07EE
H
ROW
Row = 14 (no record for row 13)
0802
H
ROW
Row = 15
0816
H
RK
Address = A10
0824
H
NUMBER
Address = A11
0836
H
RK
Address = A12
0844
H
NUMBER
Address = A15
0856
H
DBCELL
Offset to first ROW record = 00A4
H
Offsets = 0050
H
, 000E
H
, 0012
H
, 000E
H
, 0000
H
The base position for the calculation of all cell record positions is the start of the second ROW record, 07C6
H
. It 
is calculated from the position of the DBCELL record (contained in the INDEX record, 
4.7.5), the first offset 
this DBCELL record contains, and the size of the first ROW record:
0856
H
- 00A4
H
+ 0014
H
= 07B2
H
+ 0014
H
= 07C6
H
.
The calculation of the cell record positions works equally to the example for BIFF2-BIFF4 above (using 07C6
as base stream position).
If the size of all cell records of a row exceeds FFFF
H
, the respective position in the DBCELL record will contain the 
offset 0000
H
. From this point on, the offsets cannot be used anymore to calculate stream positions.
93
C# Create PDF from images Library to convert Jpeg, png images to
C# Example: Convert More than Two Type Images to PDF in C#.NET Application. This example shows how to build a PDF document with three image files (BMP, JPEG and
convert online pdf to jpg; bulk pdf to jpg
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
Besides raster image Jpeg, images forms like Png, Bmp, Gif, .NET Graphics, and REImage (an You can use this sample code to convert PDF file to Png image.
convert pdf to high quality jpg; batch pdf to jpg converter
4 Worksheet/Workbook Stream
4.7.5 Finding Row Blocks in a Worksheet
Sometimes it may be useful to jump directly to a specific cell in the Worksheet Stream or Sheet Substream. The first step 
is to find the Row Block which contains the cell. How to find a cell inside the Row Block is described in 
4.7.4.
The INDEX record (
5.59) stores the index to the first used row and stream offsets for each Row Block in the sheet.
Finding Row Blocks in BIFF2-BIFF4
In BIFF2-BIFF4 the INDEX record contains an array with the stream positions of the first ROW record of each Row 
Block. This array contains also positions for empty Row Blocks. In this case the position of the next extant Row Block is 
used.
Example: A worksheet contains data in the rows 2, 4, 65, and 100. The range of used rows in the INDEX record 
is 2…101 (last used row + 1). There are 4 Row Blocks in the sheet: 2…33, 34…65, 66…97, and 98…130. The 
third Row Block is empty.
0000
H
BOF
Type = worksheet
Sheet records
002E
H
INDEX
Row range = 2…101
Offsets = 049A
H
, 04DE
H
, 0500
H
, 0500
H
Sheet records
049A
H
ROW
Row = 2
04AE
H
ROW
Row = 4
Cell records for this Row Block
04DE
H
ROW
Row = 65
Cell records for this Row Block
0500
H
ROW
Row = 100
Cell records for this Row Block
Sheet records
EOF
Because the third Row Block is empty, the third offset in the INDEX record array points to the fourth Row Block.
94
VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.
Resize converted Tiff image using VB.NET. Convert PDF file to Tiff and jpeg in ASPX webpage online. Online source code for VB.NET class.
change file from pdf to jpg on; batch convert pdf to jpg online
VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Convert PDF to HTML. |. Home ›› XDoc.PDF ›› VB.NET PDF: PDF to HTML. Convert PDF to HTML in VB.NET Demo Code. Add necessary references:
convert .pdf to .jpg online; c# convert pdf to jpg
4.7 Cell Table and Row Blocks
Finding Row Blocks in BIFF5-BIFF8
In BIFF5-BIFF8 the INDEX record contains an array with the stream positions of the DBCELL record (
5.29) 
following the cell records in each Row Block. Because the DBCELL record is mandatory, a Row Block cannot be empty 
anymore.
Example: A worksheet contains data in the rows 2, 4, 65, and 100. The range of used rows in the INDEX record 
is 2…101 (last used row + 1). There are 4 Row Blocks in the sheet: 2…33, 34…65, 66…97, and 98…130. The 
third Row Block is empty except its DBCELL record.
0835
H
BOF
Type = worksheet
0849
H
INDEX
Row range = 2…101
Offsets = 09A9
H
, 09D7
H
, 09E1
H
, 0A0B
H
Sheet records
ROW
Row = 2
ROW
Row = 4
Cell records for this Row Block
09A9
H
DBCELL
ROW
Row = 65
Cell records for this Row Block
09D7
H
DBCELL
09E1
H
DBCELL
ROW
Row = 100
Cell records for this Row Block
0A0B
H
DBCELL
Sheet records
EOF
95
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Convert PDF to HTML. |. C#.NET PDF SDK - Convert PDF to HTML in C#.NET. How to Use C# .NET XDoc.PDF SDK to Convert PDF to HTML Webpage in C# .NET Program.
convert pdf to jpg for; convert multiple pdf to jpg online
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Sometimes, to convert PDF document into BMP, GIF, JPEG and PNG raster images in Visual Basic .NET applications, you may need a third party tool and have some
convert pdf file into jpg; best convert pdf to jpg
4 Worksheet/Workbook Stream
4.8 Array Formulas and Shared Formulas
An array formula (BIFF2-BIFF8) and a shared formula (BIFF5-BIFF8) is a formula spanning over a range of cells. Array 
formulas are handled different from single cell formulas in a spreadsheet. Shared formulas are only an optimisation to 
decrease the file size, they are not distinguishable from other cell formulas. Naturally an array formula cannot be a 
shared formula at the same time. Shared formulas are created for instance when filling a cell range from a single formula 
cell.
In general an array or shared formula is stored only once in a file, either in the ARRAY record (
5.4) for array formulas, 
or in the SHAREDFMLA record (
5.94) for shared formulas. These records are part of the Formula Cell Block 
(
4.7.2). They immediately follow the first FORMULA record (
5.50) for this range
20
. All array or shared formula cells 
contain a reference to the formula data. This reference (tExp token, 
3.10.1) consists of the cell address of the top left 
cell of the range. In this way each formula cell can be associated with its formula data.
If a formula returns a string value, a STRING record (
5.102) follows the FORMULA record normally. In the case of 
array and shared formulas, this STRING record follows the ARRAY or SHAREDFMLA record.
Example: A document contains, among other cells, an array formula in A2:B3, a single formula cell in D2, and a 
shared formula in F2:F3, which returns string values.
ROW
Row = 1 (row 2 in user interface)
ROW
Row = 2 (row 3 in user interface)
FORMULA
Address = A2, is array formula, cell range origin = A2
ARRAY
Range = A2:B3, token array of the array formula
FORMULA
Address = B2, is array formula, cell range origin = A2
FORMULA
Address = D2, token array of the formula
FORMULA
Address = F2, is shared formula, cell range origin = F2
SHAREDFMLA
Range = F2:F3, token array of the shared formula
STRING
Result of previous formula (cell F2)
Cell records
FORMULA
Address = A3, is array formula, cell range origin = A2
FORMULA
Address = B3, is array formula, cell range origin = A2
FORMULA
Address = F3, is shared formula, cell range origin = F2
STRING
Result of previous formula (cell F3)
Cell records
20
For shared formulas the first FORMULA record may not be the top-left cell of the range. It is possible to overwrite single cells of a 
shared formula range without invalidating the shared formula itself (the remaining formula cells).
96
4.9 Multiple Operation Tables
4.9 Multiple Operation Tables
A multiple operation table is a cell range filled with results of a given series of formulas and input values. Three different 
kinds of multiple operations are supported:
1) A column with formulas is aggregated with a row of input values.
2) A row with formulas is aggregated with a column of input values.
3) A column and a row of input values are aggregated using one formula.
The formulas and input values are not included in the actual operation table. They must be located in the column left of 
the table and in the row above the table. In case 3), the single formula is in the cell at top left of the table (outside).
All formulas should refer to a specific cell, the “input cell”. On calculation, this cell reference is replaced by the 
respective value from the input value range in each formula. If the input values are located in the column, the input cell is 
called “column input cell”, otherwise “row input cell”. In case 3) there is a column value range and a row value range. 
Therefore both kinds of input cells are required here. The following examples show how multiple operation tables work.
Example for a multiple operation table in the range C2:D3, with formulas in a row (C1:D1 implicitly), and input 
values in the column (B2:B3 implicitly). The table has been created with A1 as input cell. The highlighted range 
is the operation table. The example shows the calculated formulas, but they are not really contained there.
A
B
C
D
E
1
Input cell
=A1^2
=SQRT(A1)
2
4
=B2^2
=SQRT(B2)
3
9 =B3^2
=SQRT(B3)
Example for a multiple operation table in the range C2:D3, with input values in column and row (C1:D1 and 
B2:B3 implicitly, formula in B1). The table has been created with A1 as row input cell and A2 as column input 
cell. Again, the highlighted range is the operation table.
A
B
C
D
E
1
Row input cell
=A1^A2
4
5
2
Column input cell
2
=C1^B2
=D1^B2
3
3 =C1^B3
=D1^B3
Similar to array and shared formulas a multiple operation table is described only once in a file. The DATATABLE 
record (
5.24) is used for that, and possibly the DATATABLE2 record (
5.25) in BIFF2. These records are part of the 
Formula Cell Block (
4.7.2). They immediately follow the first FORMULA record (
5.50) for this table. Each cell in 
the table (which are all formula cells) contain a single tTbl token (
3.10.2) only. The token consists of the cell address 
of the top left cell of the table. In this way each cell can be associated with the description of the table.
If a formula returns a string value, a STRING record (
5.102) follows the FORMULA record normally. In the case of 
multiple operation table, this STRING record follows the DATATABLE or DATATABLE2 record.
Example: A document contains, among other cells, a multiple operation table in C2:D3.
ROW
Row = 1 (row 2 in user interface)
ROW
Row = 2 (row 3 in user interface)
FORMULA
Address = C2, is multiple operation, cell range origin = C2
DATATABLE
Range = C2:D3, table mode, input cell
FORMULA
Address = D2, is multiple operation, cell range origin = C2
Cell records
FORMULA
Address = C3, is array formula, cell range origin = C2
FORMULA
Address = D3, is array formula, cell range origin = C2
Cell records
97
4 Worksheet/Workbook Stream
4.10 Internal and External References
This chapter describes all types of 3D and external references. In detail, this could be:
A reference to a cell or a cell range of another sheet in the same workbook (3D reference);
A reference to a cell or a cell range of a sheet in another workbook (external reference);
A reference to a global or local defined name (internal name);
A reference to a defined name in another workbook (external name);
An external function (add-in, sheet macro, Basic macro);
A DDE link;
An OLE link.
For external references and external names a combination of XCT and CRN records will occur. These records store 
values of cells of the document. If the external document cannot be found, these values will be used to get the result of 
an external reference. An XCT record (
5.114) contains the number of following CRN records. A CRN record (
5.23) 
stores the contents of one cell or a sequence of cells of one row. Fragmentary cell ranges or cell ranges spanning over 
more than one row are split into several CRN records. 3D references do not use these records because the referenced 
cells are located in the own document.
It is possible to determine whether the cached cell values (the XCT and CRN records) will be stored in the file. In BIFF3 
and BIFF4 this option is stored in the SHEETPR record (
5.97). From BIFF5 on the optional record BOOKBOOL 
(
5.9) contains this option.
For all the following examples an external document “example.xls” is used. It contains 3 sheets named “ExtSheet1”, 
“ExtSheet2” and “ExtSheet3”.
98
4.10 Internal and External References
4.10.1 References in BIFF2-BIFF4
2do
99
4 Worksheet/Workbook Stream
4.10.2 References in BIFF5
The data of references is spread in several Link Tables.
Definition: Global Link Table
The Global Link Table contains reference data used by internal defined names. It is located in the Workbook 
Globals Substream (
4.2.4) and is followed by the list of DEFINEDNAME records containing definitions of all 
internal defined names. If no names are defined in the document, or none of the defined names needs any 
reference data, the Global Link Table will not occur.
Definition: Local Link Table
The reference data used in sheets (for example cell formulas) is stored in Local Link Tables inside the Sheet 
Substreams (
4.2.4). Each worksheet that uses references contains its own Local Link Table.
Structure of the Link Table
Common structure of the Link Table, BIFF5:
EXTERNCOUNT
5.40
●● EXTERNSHEET Blocks
Settings for a referenced worksheet or document
There are three different kinds of EXTERNSHEET Blocks, all starting with an EXTERNSHEET record.
The Internal EXTERNSHEET Sheet Block represents a referenced worksheet in the own document. The EXTERN-
SHEET record contains the sheet name only. There will not be any other records following it.
Common structure of an Internal EXTERNSHEET Sheet Block, BIFF5:
EXTERNSHEET
5.41
The External EXTERNSHEET Sheet Block represents a referenced worksheet in an external document. The EXTERN-
SHEET record contains the URL of the document together with the sheet name. It is followed by cached cell contents if 
enabled (see record BOOKBOOL, 
5.9).
Common structure of an External EXTERNSHEET Sheet Block, BIFF5:
EXTERNSHEET
5.41
XCT
5.114
○○ CRN
5.23
The EXTERNSHEET Document Block represents a complete external document (for example used for external names, 
add-in functions, or DDE links). The EXTERNSHEET record only contains the URL of the document without a sheet 
name. It is followed by external name definitions.
Common structure of an EXTERNSHEET Document Block, BIFF5:
EXTERNSHEET
5.41
●● EXTERNALNAME
5.39
100
Documents you may be interested
Documents you may be interested