|
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.
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|