Spreadsheet
The file parser outputs content (data or text) for cells in a spreadsheet by
using the
SOPutDataCell and
SOPutTextCell functions. Before outputting cell data, the file parser must get the range of
columns to be output by using the
SOGetInfo function with the SOINFO_COLUMNRANGE value. When
SOGetInfo returns, the low-order word of its
pInfo parameter identifies the first column of data to generate output for, and the
high-order word identifies the last column. The file parser should only call
SOPutDataCell or
SOPutTextCell for cells within the range indicated by a call to
SOGetInfo. When there is no more data within a range of columns, the file parser must
call the
SOPutBreak function with either the SO_EOFBREAK or SO_SECTIONBREAK value, whichever
applies. This must be done for each range of columns in the document.
For example, if the first column is 10 and the last column is 19, the filter
reads the file from its current position, but it only calls
SOPutDataCell or
SOPutTextCell for cells that belong in columns 10 through column 19, inclusively. (Column
numbers are zero based.) The parser skips over cells that belong in columns
outside of this range. The filter must produce cells for
all columns in the range, filling in with empty cells, if necessary. As before,
the filter continues until
SOPutBreak returns the SO_STOP value.
In general, the file parser should carry out the following steps:
- Determine the desired range of columns.
- Determine the next cell available from the input file.
- If the cell is not in the given range of columns, jump to step 2.
- If the cell is not empty, call SOPutDataCell or SOPutTextCell with the current data. Otherwise, call SOPutDataCell for a cell of the SO_CELLEMPTY type.
- Update local variables, such as row and column numbers.
- Call SOPutBreak with the SO_CELLBREAK value.
- If SOPutBreak returns the SO_STOP value, return from the VwStreamReadFunc function.
- If at the beginning of the next section, call SOPutBreak with the SO_SECTIONBREAK value and return.
- If at the end of the file, call SOPutBreak with the SO_EOFBREAK value and return.
- Repeat steps 2 through 10.
When the chunker saves local data for various seek positions in a document, it
does so within
SOPutBreak, when the break is of the SO_CELLBREAK type. Thus, when a file parser has its
local data restored for a random seek position, the data will reflect the
state of the file parser during its call to
SOPutBreak for the last cell of the previous chunk in the current range of cells. Any
tracking done by the parser, such as the current row number, should be updated
before
SOPutBreak is called for each cell.
Every horizontal range of columns, specified by
dwExtraData in each call to your
VwStreamReadFunc function, must eventually be terminated by a call to
SOPutBreak with SO_EOFBREAK or SO_SECTIONBREAK value, whichever is applicable. The type
of break depends on the input file. A file parser must not put a section break
at the end of the file, and an end-of-file (EOF) break, of course, cannot occur
anywhere but at the actual end of the file.
For example, if the input document contains a single spreadsheet that is 30
columns wide, the display engine can call the parser with three different ranges
of columns: 0 to 11, 12 to 23, and 24 to 29. The file parser calls
SOPutBreak with an EOF break three times, once for each time it reaches the end of the
file while processing a given range.
When calling
SOPutBreak with a section break, the file parser must be sure that the seek position is
at the beginning of the next section
that is, the file position where the file parser needs to be when
VwStreamSectionFunc is next called. Any one of the calls to
SOPutBreak for a section break may be the one that sets the seek position for the top of
the next section.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database