Freeform Excel Worksheet (No OLE or EXCEL required)

 

Freeform Excel Worksheet (No OLE or EXCEL required) Question / Problem / Abstract:
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)See also : Article_3475.asp 
-  (TDataSet to Excel) 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)This Class allows you to create an Excel Worksheet 
in  much the 
Freeform Excel Worksheet (No OLE or EXCEL required)same way 
as  you create a TStringGrid. ie. Cell[Column,Row]. 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
-------------------------------------------------------------------------  
Freeform Excel Worksheet (No OLE or EXCEL required)Features 
Freeform Excel Worksheet (No OLE or EXCEL required)
-------------------------------------------------------------------------  
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)Freeform cell access with DataType,FontIndex,FormatString, 
Freeform Excel Worksheet (No OLE or EXCEL required)Alignment,Pattern and BorderStyle. 
Freeform Excel Worksheet (No OLE or EXCEL required)NOTE : The col and row indexes are ZERO based 
in  the same way 
Freeform Excel Worksheet (No OLE or EXCEL required)       
as  cells  in  a TStringGrid 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
4  Mapable system fonts (Preset to Freeform Excel Worksheet (No OLE or EXCEL required).) 
Freeform Excel Worksheet (No OLE or EXCEL required)       Default   
=  Arial  10  regular         : FontIndex  =   0  
Freeform Excel Worksheet (No OLE or EXCEL required)       Alt_1     
=  Arial  10  bold            : FontIndex  =   1  
Freeform Excel Worksheet (No OLE or EXCEL required)       Alt_2     
=  Courier New  11  regular   : FontIndex  =   2  
Freeform Excel Worksheet (No OLE or EXCEL required)       Alt_3     
=  Courier New  11  bold      : FontIndex  =   3  
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)User definable cell formats 
using  Excel syntax (Defaults  set  to Freeform Excel Worksheet (No OLE or EXCEL required).) 
Freeform Excel Worksheet (No OLE or EXCEL required)       String    
=   ' General '  
Freeform Excel Worksheet (No OLE or EXCEL required)       Integer   
=   ' 0 '  
Freeform Excel Worksheet (No OLE or EXCEL required)       Double    
=   ' ###,###,##0.00 '  
Freeform Excel Worksheet (No OLE or EXCEL required)       DateTime  
=   ' dd-mmm-yyyy hh:mm:ss '  
Freeform Excel Worksheet (No OLE or EXCEL required)       Date      
=   ' dd-mmm-yyyy '  
Freeform Excel Worksheet (No OLE or EXCEL required)       Time      
=   ' hh:mm:ss '  
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)Set individual Column Widths and Row Heights. 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
-------------------------------------------------------------------------  
Freeform Excel Worksheet (No OLE or EXCEL required)Example Code Snippet 
Freeform Excel Worksheet (No OLE or EXCEL required)
-------------------------------------------------------------------------  
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)uses MahWorksheet; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)procedure ExcelDemo; 
Freeform Excel Worksheet (No OLE or EXCEL required)var i : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    oWorksheet : TExcelWorkSheet; 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  oWorksheet :
=  TExcelWorkSheet.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Override mappable font 2 and 3 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.SetFont_2( ' Times Roman ' , 12 , [fsBold,fsUnderline],XL_BLUE); 
Freeform Excel Worksheet (No OLE or EXCEL required)  oWorksheet.SetFont_3(
' Ms Serif ' );  //  accept other defaults 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Set a column width 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.ColumnWidth( 3 , 50 );    //  Excel Col D 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Set a row height 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.RowHeight( 25 , 40 );     //  Excel Row 26 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.RowHeight( 26 , 30 );     //  Excel Row 27 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Set a cell via the procedural way 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.SetCell( 3 , 25 ,xlString, ' Hello World ' ,XL_FONT_2, 
Freeform Excel Worksheet (No OLE or EXCEL required)                     
' General ' ,xalLeft, true ,[xbTop,xbBottom]); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Do the same thing via object oriented 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oCell : =  oWorksheet.NewCell( 3 , 16 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.DataType :
=  xlDateTime; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.Data :
=  Now; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Change the data in cell 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oCell : =  oWorksheet.GetCell( 3 , 25 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.Data :
=   ' Hello World with Borders '
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.BorderStyle :
=  [xbLeft,xbRight,xbTop,xbBottom]; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.Align :
=  xalCenter; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Write out a column of integers 
Freeform Excel Worksheet (No OLE or EXCEL required)
   for  i : =   1000  to  1255   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell :
=  oWorksheet.NewCell( 6 ,i  -   1000 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell.DataType :
=  xlInteger; 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell.Data :
=  i; 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell.FormatString :
=   ' ###,##0 ' ;   //  overide default '0' 
Freeform Excel Worksheet (No OLE or EXCEL required)
    oCell.FontIndex : =  XL_FONT_1; 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Blank out a cell 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.BlankCell( 6 , 20 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Save our work 
Freeform Excel Worksheet (No OLE or EXCEL required)
  oWorksheet.SaveToFile( ' c:\temp\test ' ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(oWorksheet); 
Freeform Excel Worksheet (No OLE or EXCEL required)end;
Freeform Excel Worksheet (No OLE or EXCEL required)

 

Freeform Excel Worksheet (No OLE or EXCEL required) Answer:
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)unit MahWorksheet; 
Freeform Excel Worksheet (No OLE or EXCEL required)
interface  
Freeform Excel Worksheet (No OLE or EXCEL required)uses Windows, Classes, SysUtils, Math, Variants, Graphics; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Microsoft Excel Worksheet Class 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Excel 2.1 BIFF2 Specification 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Mike Heydon 2007 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  
Freeform Excel Worksheet (No OLE or EXCEL required)
//  --------------------------------------------------------------------- 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  PUBLIC Methods 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  --------------------------------------------------------------------- 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  function GetCell(ACol,ARow : word) : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  function NewCell(ACol,ARow :word) : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  function GetFont_Default : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  function GetFont_1 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  function GetFont_2 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  function GetFont_3 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure SetFont_Default(const AFontName : string; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                            AFontSize : byte = 10; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                            AFontStyle : TFontStyles = []; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                            AFontColor : word = 0); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure SetFont_1(const AFontName : string; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontSize : byte = 10; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontStyle : TFontStyles = []; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontColor : word = 0); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure SetFont_2(const AFontName : string; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontSize : byte = 10; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontStyle : TFontStyles = []; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontColor : word = 0); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure SetFont_3(const AFontName : string; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontSize : byte = 10; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontStyle : TFontStyles = []; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                      AFontColor : word = 0); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure BlankCell(ACol,ARow : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure SetCell(ACol,ARow : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    ADataType : TExcelDataType; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    AData : Olevariant; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    AFontIndex : byte = 0; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    AFormatString : string = 'General'; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    AAlign : TExcelCellAlign = xalGeneral; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    AHasPattern : boolean = false; 
Freeform Excel Worksheet (No OLE or EXCEL required)
//                    ABorderStyle : TExcelBorders = []); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure ColumnWidth(ACol : byte; AWidth : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure RowHeight(ARow : word; AHeight : byte); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  procedure SaveToFile(const AFileName : string); 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
const  
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Font Types - 4 Mapable Fonts - TExcelCell.FontIndex 
Freeform Excel Worksheet (No OLE or EXCEL required)
     XL_FONT_DEFAULT  =   0
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_FONT_1       
=   1
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_FONT_2       
=   2
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_FONT_3       
=   3
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Font Colors 
Freeform Excel Worksheet (No OLE or EXCEL required)
     XL_BLACK    : word  =  $ 0000
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_WHITE    : word 
=  $ 0001
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_RED      : word 
=  $ 0002
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_GREEN    : word 
=  $ 0003
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_BLUE     : word 
=  $ 0004
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_YELLOW   : word 
=  $ 0005
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_MAGENTA  : word 
=  $ 0006
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_CYAN     : word 
=  $ 0007
Freeform Excel Worksheet (No OLE or EXCEL required)     XL_SYSTEM   : word 
=  $7FFF; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)type 
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Border Styles used by TExcelCell.BorderStyle 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TExcelBorderType  =  (xbLeft,xbRight,xbTop,xbBottom); 
Freeform Excel Worksheet (No OLE or EXCEL required)     TExcelBorders    
=   set  of TExcelBorderType; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Data types used by TExcelCell.DataType 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TExcelDataType  =  (xlDouble,xlInteger,xlDate,xlTime, 
Freeform Excel Worksheet (No OLE or EXCEL required)                       xlDateTime,xlString); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Cell Alignment used by TExcelCell.Align 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TExcelCellAlign  =  (xalGeneral,xalLeft,xalCenter,xalRight); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Structure Returned by GetFont_?() 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TExcelFont  =  record 
Freeform Excel Worksheet (No OLE or EXCEL required)       FontName : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)       FontSize : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)       FontStyle : TFontStyles; 
Freeform Excel Worksheet (No OLE or EXCEL required)       FontColor : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)     end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Cell object of a TExcelWorkSheet 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TExcelCell  =   class (TObject) 
Freeform Excel Worksheet (No OLE or EXCEL required)     
private  
Freeform Excel Worksheet (No OLE or EXCEL required)       FRow,FCol : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)     
public  
Freeform Excel Worksheet (No OLE or EXCEL required)       DataType : TExcelDataType; 
Freeform Excel Worksheet (No OLE or EXCEL required)       Data : Olevariant; 
Freeform Excel Worksheet (No OLE or EXCEL required)       FontIndex : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)       FormatString : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)       Align : TExcelCellAlign; 
Freeform Excel Worksheet (No OLE or EXCEL required)       HasPattern : boolean; 
Freeform Excel Worksheet (No OLE or EXCEL required)       BorderStyle : TExcelBorders; 
Freeform Excel Worksheet (No OLE or EXCEL required)       constructor Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)     end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Main TExcelWorkSheet Class 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TExcelWorkSheet  =   class (TObject) 
Freeform Excel Worksheet (No OLE or EXCEL required)     
private  
Freeform Excel Worksheet (No OLE or EXCEL required)       FFile : file; 
Freeform Excel Worksheet (No OLE or EXCEL required)       FMaxRow,FMaxCol : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)       FRowHeights,FFontTable, 
Freeform Excel Worksheet (No OLE or EXCEL required)       FUsedRows,FFormats, 
Freeform Excel Worksheet (No OLE or EXCEL required)       FColWidths,FCells : TStringList; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function _GetFont(AFontNum : 
byte ) : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function _CalcSize(AIndex : integer) : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SetColIdx(AListIdx : integer; ARow : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)                           
out  AFirst : word;  out  ALast : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SaveFontTable; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SaveColWidths; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SaveFormats; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SaveDimensions; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SaveRowBlocks; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SaveCells(ARowFr,ARowTo : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _WriteToken(AToken : word; ADataLen : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _WriteFont(
const  AFontName :  string ; AFontHeight, 
Freeform Excel Worksheet (No OLE or EXCEL required)                            AAttribute : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure _SetFont(AFontNum : 
byte const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                          AFontSize : 
byte ; AFontStyle : TFontStyles; 
Freeform Excel Worksheet (No OLE or EXCEL required)                          AFontColor : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)     
public  
Freeform Excel Worksheet (No OLE or EXCEL required)       constructor Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)       destructor Destroy; 
override
Freeform Excel Worksheet (No OLE or EXCEL required)       function GetCell(ACol,ARow : word) : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function NewCell(ACol,ARow :word) : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function GetFont_Default : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function GetFont_1 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function GetFont_2 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)       function GetFont_3 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure SetFont_Default(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                 AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                                 AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                 AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure SetFont_1(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure SetFont_2(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure SetFont_3(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                           AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure BlankCell(ACol,ARow : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure SetCell(ACol,ARow : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)                         ADataType : TExcelDataType; 
Freeform Excel Worksheet (No OLE or EXCEL required)                         AData : Olevariant; 
Freeform Excel Worksheet (No OLE or EXCEL required)                         AFontIndex : 
byte   =   0
Freeform Excel Worksheet (No OLE or EXCEL required)                         AFormatString : 
string   =   ' General '
Freeform Excel Worksheet (No OLE or EXCEL required)                         AAlign : TExcelCellAlign 
=  xalGeneral; 
Freeform Excel Worksheet (No OLE or EXCEL required)                         AHasPattern : boolean 
=   false
Freeform Excel Worksheet (No OLE or EXCEL required)                         ABorderStyle : TExcelBorders 
=  []); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure ColumnWidth(ACol : 
byte ; AWidth : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure RowHeight(ARow : word; AHeight : 
byte ); 
Freeform Excel Worksheet (No OLE or EXCEL required)       procedure SaveToFile(
const  AFileName :  string ); 
Freeform Excel Worksheet (No OLE or EXCEL required)     end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ----------------------------------------------------------------------------- 
Freeform Excel Worksheet (No OLE or EXCEL required)
implementation 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
const  
Freeform Excel Worksheet (No OLE or EXCEL required)      
//  XL Tokens 
Freeform Excel Worksheet (No OLE or EXCEL required)
      XL_DIM       : word  =  $ 0000
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_BOF       : word 
=  $ 0009
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_EOF       : word 
=  $000A; 
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_ROW       : word 
=  $ 0008
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_DOCUMENT  : word 
=  $ 0010
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_FORMAT    : word 
=  $001E; 
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_COLWIDTH  : word 
=  $ 0024
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_FONT      : word 
=  $ 0031
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_FONTCOLOR : word 
=  $ 0045
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
//  XL Cell Types 
Freeform Excel Worksheet (No OLE or EXCEL required)
      XL_INTEGER    =  $ 02
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_DOUBLE    
=  $ 03
Freeform Excel Worksheet (No OLE or EXCEL required)      XL_STRING    
=  $ 04
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)type 
Freeform Excel Worksheet (No OLE or EXCEL required)     
//  Used when writing in RowBlock mode 
Freeform Excel Worksheet (No OLE or EXCEL required)
     TRowRec  =  packed record 
Freeform Excel Worksheet (No OLE or EXCEL required)       RowIdx,FirstCell,LastCell : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)       Height : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)       NotUsed : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)       Defs : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)       OSet : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)     end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Free Form Excel Spreadsheet 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Create a ne Excel Cell Object and initialise defaults 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
constructor TExcelCell.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  inherited Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  FRow :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  FCol :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  DataType :
=  xlString; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FontIndex :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  FormatString :
=   ' General '
Freeform Excel Worksheet (No OLE or EXCEL required)  Align :
=  xalGeneral; 
Freeform Excel Worksheet (No OLE or EXCEL required)  HasPattern :
=   false
Freeform Excel Worksheet (No OLE or EXCEL required)  BorderStyle :
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ============================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Create and Destroy TExcelWorkSheet Class 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ============================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)constructor TExcelWorkSheet.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  inherited Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  FColWidths :
=  TStringList.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FRowHeights :
=  TStringList.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FUsedRows :
=  TStringList.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FUsedRows.Sorted :
=   true
Freeform Excel Worksheet (No OLE or EXCEL required)  FUsedRows.Duplicates :
=  dupIgnore; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFormats :
=  TStringList.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFormats.Sorted :
=   true
Freeform Excel Worksheet (No OLE or EXCEL required)  FFormats.Duplicates :
=  dupIgnore; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FCells :
=  TStringList.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FCells.Sorted :
=   true
Freeform Excel Worksheet (No OLE or EXCEL required)  FCells.Duplicates :
=  dupIgnore; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable :
=  TStringList.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable.AddObject(
' Arial|10|0 ' ,nil); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable.AddObject(
' Arial|10|1 ' ,nil); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable.AddObject(
' Courier New|11|0 ' ,nil); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable.AddObject(
' Courier New|11|1 ' ,nil); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)destructor TExcelWorkSheet.Destroy; 
Freeform Excel Worksheet (No OLE or EXCEL required)var i : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  
for  i : =   0  to FCells.Count  -   1   do  
Freeform Excel Worksheet (No OLE or EXCEL required)    TExcelCell(FCells.Objects[i]).Free; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(FCells); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(FColWidths); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(FFormats); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(FFontTable); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(FUsedRows); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FreeAndNil(FRowHeights); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  inherited Destroy; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out a Token and Data length record 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._WriteToken(AToken : word; ADataLen : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var aWord : array [
0 .. 1 ] of word; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  aWord[
0 ] : =  AToken; 
Freeform Excel Worksheet (No OLE or EXCEL required)  aWord[
1 ] : =  ADataLen; 
Freeform Excel Worksheet (No OLE or EXCEL required)  Blockwrite(FFile,aWord,SizeOf(aWord)); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out a FONT record 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorksheet._WriteFont(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                     AFontHeight,AAttribute : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var iLen : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  AFontHeight :
=  AFontHeight  *   20
Freeform Excel Worksheet (No OLE or EXCEL required)  _WriteToken(XL_FONT,
5   +  length(AFontName)); 
Freeform Excel Worksheet (No OLE or EXCEL required)  BlockWrite(FFile,AFontHeight,
2 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  BlockWrite(FFile,AAttribute,
2 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  iLen :
=  length(AFontName); 
Freeform Excel Worksheet (No OLE or EXCEL required)  BlockWrite(FFile,iLen,
1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  BlockWrite(FFile,AFontName[
1 ],iLen); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ==================================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out the Font Table 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Also create a table of used rows and rows that have height changed. 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Also set the Max Row and Col used for DIMENSION Record 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Also create the user defined format strings table 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ==================================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SaveFontTable; 
Freeform Excel Worksheet (No OLE or EXCEL required)var i,iAttr,iSize, 
Freeform Excel Worksheet (No OLE or EXCEL required)    iRow,iIdx : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iColor : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey,sName : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell : TexcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  FMaxRow :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  FMaxCol :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  FFormats.Clear; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FUsedRows.Clear; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Add any new formats - Get Unique Rows Used 
Freeform Excel Worksheet (No OLE or EXCEL required)
   for  i : =   0  to FCells.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell :
=  TExcelCell(FCells.Objects[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  not SameText( ' General ' ,oCell.FormatString) then 
Freeform Excel Worksheet (No OLE or EXCEL required)      FFormats.Add(oCell.FormatString); 
Freeform Excel Worksheet (No OLE or EXCEL required)    FUsedRows.Add(FormatFloat(
' 00000 ' ,oCell.FRow)); 
Freeform Excel Worksheet (No OLE or EXCEL required)    FMaxRow :
=  Min(oCell.FRow,$FFFF); 
Freeform Excel Worksheet (No OLE or EXCEL required)    FMaxCol :
=  Min(oCell.FCol,$FFFF); 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Add any custom row heights 
Freeform Excel Worksheet (No OLE or EXCEL required)
   for  i : =   0  to FRowHeights.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    iRow :
=  StrToInt(FRowHeights[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey :
=  FormatFloat( ' 00000 ' ,iRow); 
Freeform Excel Worksheet (No OLE or EXCEL required)    iSize :
=  word(FRowHeights.Objects[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  FUsedRows.Find(sKey,iIdx) then 
Freeform Excel Worksheet (No OLE or EXCEL required)      FUsedRows.Objects[iIdx] :
=  TObject(iSize) 
Freeform Excel Worksheet (No OLE or EXCEL required)    
else  
Freeform Excel Worksheet (No OLE or EXCEL required)      FUsedRows.AddObject(sKey,TObject(iSize)); 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Write Font Table 
Freeform Excel Worksheet (No OLE or EXCEL required)
   for  i : =   0  to FFontTable.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey :
=  FFontTable[i]; 
Freeform Excel Worksheet (No OLE or EXCEL required)    sName :
=  copy(sKey, 1 ,pos( ' | ' ,sKey)  -   1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey :
=  copy(sKey,pos( ' | ' ,skey)  +   1 , 2096 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    iSize :
=  StrToInt(copy(sKey, 1 ,pos( ' | ' ,sKey)  -   1 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)    iAttr :
=  StrToInt(copy(sKey,pos( ' | ' ,skey)  +   1 , 2096 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)    _WriteFont(sName,iSize,iAttr); 
Freeform Excel Worksheet (No OLE or EXCEL required)    _WriteToken(XL_FONTCOLOR,
2 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    iColor :
=  word(FFontTable.Objects[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)    Blockwrite(FFile,iColor,
2 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out the default + user format strings 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SaveFormats; 
Freeform Excel Worksheet (No OLE or EXCEL required)var i : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iLen : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)    sFormat : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  FFormats already loaded in _SaveFontTable 
Freeform Excel Worksheet (No OLE or EXCEL required)
  FFormats.Add( ' 0 ' );                      //  Integer Default 
Freeform Excel Worksheet (No OLE or EXCEL required)
  FFormats.Add( ' ###,###,##0.00 ' );         //  Double Default 
Freeform Excel Worksheet (No OLE or EXCEL required)
  FFormats.Add( ' dd-mmm-yyyy hh:mm:ss ' );   //  DateTime Default 
Freeform Excel Worksheet (No OLE or EXCEL required)
  FFormats.Add( ' dd-mmm-yyyy ' );            //  Date Default 
Freeform Excel Worksheet (No OLE or EXCEL required)
  FFormats.Add( ' hh:mm:ss ' );               //  Time default 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Add General Default index 0 
Freeform Excel Worksheet (No OLE or EXCEL required)
  sFormat : =   ' General '
Freeform Excel Worksheet (No OLE or EXCEL required)  _WriteToken(XL_FORMAT,
1   +  length(sFormat)); 
Freeform Excel Worksheet (No OLE or EXCEL required)  iLen :
=  length(sFormat); 
Freeform Excel Worksheet (No OLE or EXCEL required)  Blockwrite(FFile,iLen,
1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  Blockwrite(FFile,sFormat[
1 ],iLen); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
for  i : =   0  to FFormats.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    sFormat :
=  trim(FFormats[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  not SameText(sFormat, ' General ' ) then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      _WriteToken(XL_FORMAT,
1   +  length(sFormat)); 
Freeform Excel Worksheet (No OLE or EXCEL required)      iLen :
=  length(sFormat); 
Freeform Excel Worksheet (No OLE or EXCEL required)      Blockwrite(FFile,iLen,
1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)      Blockwrite(FFile,sFormat[
1 ],iLen); 
Freeform Excel Worksheet (No OLE or EXCEL required)    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ============================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out DIMENSION Record 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ============================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SaveDimensions; 
Freeform Excel Worksheet (No OLE or EXCEL required)var aDIMBuffer : array [
0 .. 3 ] of word; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  _WriteToken(XL_DIM,
8 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  aDIMBuffer[
0 ] : =   0
Freeform Excel Worksheet (No OLE or EXCEL required)  aDIMBuffer[
1 ] : =  FMaxRow; 
Freeform Excel Worksheet (No OLE or EXCEL required)  aDIMBuffer[
2 ] : =   0
Freeform Excel Worksheet (No OLE or EXCEL required)  aDIMBuffer[
3 ] : =  FMaxCol; 
Freeform Excel Worksheet (No OLE or EXCEL required)  Blockwrite(FFile,aDIMBuffer,SizeOf(aDIMBuffer)); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Save Cell Records 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SaveCells(ARowFr,ARowTo : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var i,iIdx : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iRow,iCol : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iDataLen,iFmtIdx, 
Freeform Excel Worksheet (No OLE or EXCEL required)    iBorders, 
Freeform Excel Worksheet (No OLE or EXCEL required)    iShade,iAlign, 
Freeform Excel Worksheet (No OLE or EXCEL required)    iFntIdx,iFmtFnt : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)    dDblData : 
double
Freeform Excel Worksheet (No OLE or EXCEL required)    sStrData : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    aAttributes : array [
0 .. 2 ] of  byte
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  aAttributes[
0 ] : =   0 ;   //  No reference to XF 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)  
for  i : =   0  to FCells.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell :
=  TExcelCell(FCells.Objects[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)    
//  Row and Col resolve 
Freeform Excel Worksheet (No OLE or EXCEL required)
    iRow : =  oCell.FRow; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  iRow  >=  ARowFr then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  iRow  >  ARowTo then  break
Freeform Excel Worksheet (No OLE or EXCEL required)      iCol :
=  oCell.FCol; 
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  iCol  >   255  then iCol : =   255
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
//  Format IDX resolve - set defaults for numerics/dates 
Freeform Excel Worksheet (No OLE or EXCEL required)
      iFmtIdx : =   0
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  SameText( ' General ' ,oCell.FormatString) and 
Freeform Excel Worksheet (No OLE or EXCEL required)         (oCell.DataType 
<>  xlString) then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      
case  oCell.DataType of 
Freeform Excel Worksheet (No OLE or EXCEL required)        xlInteger   : oCell.FormatString :
=   ' 0 '
Freeform Excel Worksheet (No OLE or EXCEL required)        xlDateTime  : oCell.FormatString :
=   ' dd-mmm-yyyy hh:mm:ss '
Freeform Excel Worksheet (No OLE or EXCEL required)        xlTime      : oCell.FormatString :
=   ' hh:mm:ss '
Freeform Excel Worksheet (No OLE or EXCEL required)        xlDate      : oCell.FormatString :
=   ' dd-mmm-yyyy '
Freeform Excel Worksheet (No OLE or EXCEL required)        xlDouble    : oCell.FormatString :
=   ' ###,###,##0.00 '
Freeform Excel Worksheet (No OLE or EXCEL required)        end; 
Freeform Excel Worksheet (No OLE or EXCEL required)      end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  FFormats.Find(oCell.FormatString,iIdx) then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)        
if  iIdx  >   62  then iIdx : =   62
Freeform Excel Worksheet (No OLE or EXCEL required)        iFmtIdx :
=  iIdx  +   1
Freeform Excel Worksheet (No OLE or EXCEL required)      end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
//  Font IDX resolve and or with format 
Freeform Excel Worksheet (No OLE or EXCEL required)
      iFntIdx : =  oCell.FontIndex shl  6
Freeform Excel Worksheet (No OLE or EXCEL required)      iFmtFnt :
=  iFmtIdx or iFntIdx; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
//  Shading and alignment and borders 
Freeform Excel Worksheet (No OLE or EXCEL required)
      iShade : =   0
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  oCell.HasPattern then iShade : =  $ 80
Freeform Excel Worksheet (No OLE or EXCEL required)      iAlign :
=   byte (oCell.Align); 
Freeform Excel Worksheet (No OLE or EXCEL required)      iBorders :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  xbLeft  in  oCell.BorderStyle then iBorders : =  iBorders or $ 08
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  xbRight  in  oCell.BorderStyle then iBorders : =  iBorders or $ 10
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  xbTop  in  oCell.BorderStyle then iBorders : =  iBorders or $ 20
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  xbBottom  in  oCell.BorderStyle then iBorders : =  iBorders or $ 40
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
//  Resolve Data Type 
Freeform Excel Worksheet (No OLE or EXCEL required)
       case  oCell.DataType of 
Freeform Excel Worksheet (No OLE or EXCEL required)        xlInteger, 
Freeform Excel Worksheet (No OLE or EXCEL required)        xlDateTime, 
Freeform Excel Worksheet (No OLE or EXCEL required)        xlTime, 
Freeform Excel Worksheet (No OLE or EXCEL required)        xlDate, 
Freeform Excel Worksheet (No OLE or EXCEL required)        xlDouble  : begin 
Freeform Excel Worksheet (No OLE or EXCEL required)                      dDblData :
=  oCell.Data; 
Freeform Excel Worksheet (No OLE or EXCEL required)                      iDataLen :
=  SizeOf( double ); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      _WriteToken(XL_DOUBLE,
15 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      _WriteToken(iRow,iCol); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      aAttributes[
1 ] : =  iFmtFnt; 
Freeform Excel Worksheet (No OLE or EXCEL required)                      aAttributes[
2 ] : =  iAlign or iShade or iBorders; 
Freeform Excel Worksheet (No OLE or EXCEL required)                      Blockwrite(FFile,aAttributes,SizeOf(aAttributes)); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      Blockwrite(FFile,dDblData,iDatalen); 
Freeform Excel Worksheet (No OLE or EXCEL required)                    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)        xlString  : begin 
Freeform Excel Worksheet (No OLE or EXCEL required)                      sStrData :
=  oCell.Data; 
Freeform Excel Worksheet (No OLE or EXCEL required)                      iDataLen :
=  length(sStrData); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      _WriteToken(XL_STRING,iDataLen 
+   8 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      _WriteToken(iRow,iCol); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      aAttributes[
1 ] : =  iFmtFnt; 
Freeform Excel Worksheet (No OLE or EXCEL required)                      aAttributes[
2 ] : =  iAlign or iShade or iBorders; 
Freeform Excel Worksheet (No OLE or EXCEL required)                      Blockwrite(FFile,aAttributes,SizeOf(aAttributes)); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      Blockwrite(FFile,iDataLen,SizeOf(iDataLen)); 
Freeform Excel Worksheet (No OLE or EXCEL required)                      
if  iDataLen  >   0  then Blockwrite(FFile,sStrData[ 1 ],iDataLen); 
Freeform Excel Worksheet (No OLE or EXCEL required)                    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)      end; 
Freeform Excel Worksheet (No OLE or EXCEL required)    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Calulate the size of the cell record + data 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet._CalcSize(AIndex : integer) : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)var iResult : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)    oCell : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  iResult :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell :
=  TExcelCell(FCells.Objects[AIndex]); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
case  oCell.DataType of 
Freeform Excel Worksheet (No OLE or EXCEL required)    xlInteger, 
Freeform Excel Worksheet (No OLE or EXCEL required)    xlDateTime, 
Freeform Excel Worksheet (No OLE or EXCEL required)    xlTime, 
Freeform Excel Worksheet (No OLE or EXCEL required)    xlDate, 
Freeform Excel Worksheet (No OLE or EXCEL required)    xlDouble  : iResult :
=   19
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    xlString  : iResult :
=  length(oCell.Data)  +   12
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  iResult; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ================================================================ 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Fint fisrt and last used column ro ROW Record 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Only used when writing in RowBlock mode (_SaveRowBlocks) 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ================================================================ 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SetColIdx(AListIdx : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                     ARow : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                     
out  AFirst : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                     
out  ALast : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    i,iIdx, 
Freeform Excel Worksheet (No OLE or EXCEL required)    iRow : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iDataSize : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  FUsedRows.Objects[AListIdx] :
=  nil; 
Freeform Excel Worksheet (No OLE or EXCEL required)  iDataSize :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  iIdx :
=   - 1
Freeform Excel Worksheet (No OLE or EXCEL required)  AFirst :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  ALast :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Find first row-col combo 
Freeform Excel Worksheet (No OLE or EXCEL required)
   for  i : =   0  to FCells.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey :
=  FCells[i]; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iRow :
=  StrToInt( ' $ '   +  copy(sKey, 1 , 4 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  iRow  =  ARow then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      iIdx :
=  i; 
Freeform Excel Worksheet (No OLE or EXCEL required)      
break
Freeform Excel Worksheet (No OLE or EXCEL required)    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Found rows? 
Freeform Excel Worksheet (No OLE or EXCEL required)
   if  iIdx  >=   0  then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    AFirst :
=  StrToInt( ' $ '   +  copy(sKey, 5 , 4 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)    ALast :
=  AFirst; 
Freeform Excel Worksheet (No OLE or EXCEL required)    inc(iDataSize,_CalcSize(iIdx)); 
Freeform Excel Worksheet (No OLE or EXCEL required)    inc(iIdx); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
//  Repeat until last row-col 
Freeform Excel Worksheet (No OLE or EXCEL required)
     if  iIdx  <  FCells.Count then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      
while   true   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)        sKey :
=  FCells[iIdx]; 
Freeform Excel Worksheet (No OLE or EXCEL required)        iRow :
=  StrToInt( ' $ '   +  copy(sKey, 1 , 4 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)        
if  iRow  =  ARow then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)          ALast :
=  StrToInt( ' $ '   +  copy(sKey, 5 , 4 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)          inc(iDataSize,_CalcSize(iIdx)); 
Freeform Excel Worksheet (No OLE or EXCEL required)        end 
Freeform Excel Worksheet (No OLE or EXCEL required)        
else  
Freeform Excel Worksheet (No OLE or EXCEL required)          
break
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)        inc(iIdx); 
Freeform Excel Worksheet (No OLE or EXCEL required)        
if  iIdx  =  FCells.Count then  break
Freeform Excel Worksheet (No OLE or EXCEL required)      end; 
Freeform Excel Worksheet (No OLE or EXCEL required)    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    inc(ALast); 
Freeform Excel Worksheet (No OLE or EXCEL required)    FUsedRows.Objects[AListIdx] :
=  TObject(iDataSize); 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ================================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out row/cells in ROWBLOCK format 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  NOTE : This mode is onley used when at least 1 row has 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  had it's height set by SetRowHeight(), otherwise _SaveCell() 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  is run from first to last cells in sheet (faster) 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ================================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SaveRowBlocks; 
Freeform Excel Worksheet (No OLE or EXCEL required)
const  aWINDOW1 : array [ 0 .. 13 ] of  byte   =  ($3d,$ 00 ,$0A,$ 00 ,$ 68 ,$ 01 ,$D2, 
Freeform Excel Worksheet (No OLE or EXCEL required)                                          $
00 ,$DC,$ 41 ,$B8,$ 29 ,$ 00 ,$ 00 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)var i,iArrIdx, 
Freeform Excel Worksheet (No OLE or EXCEL required)    iIdx,iCount,iLoop : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iFirst,iLast,iHeight : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)    aAttributes : array [
0 .. 2 ] of  byte
Freeform Excel Worksheet (No OLE or EXCEL required)    aRowRec : array of TRowRec; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  aAttributes[
0 ] : =   0 ;   //  No reference to XF 
Freeform Excel Worksheet (No OLE or EXCEL required)
  iLoop : =   0
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Process in blocks of 32 rows 
Freeform Excel Worksheet (No OLE or EXCEL required)
   while   true   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    iArrIdx :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  iLoop  +   31   <  FUsedRows.Count  -   1  then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      iCount :
=  iLoop  +   31
Freeform Excel Worksheet (No OLE or EXCEL required)      SetLength(aRowRec,
32 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    end 
Freeform Excel Worksheet (No OLE or EXCEL required)    
else  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      iCount :
=  FUsedRows.Count  -   1
Freeform Excel Worksheet (No OLE or EXCEL required)      SetLength(aRowRec,iCount 
-  iLoop  +   1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    
for  i : =  iLoop to iCount  do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)      aRowRec[iArrIdx].RowIdx :
=  StrToInt(FUsedRows[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)      _SetColIdx(i,aRowRec[iArrIdx].RowIdx,iFirst,iLast); 
Freeform Excel Worksheet (No OLE or EXCEL required)      aRowRec[iArrIdx].FirstCell :
=  iFirst; 
Freeform Excel Worksheet (No OLE or EXCEL required)      aRowRec[iArrIdx].LastCell :
=  iLast; 
Freeform Excel Worksheet (No OLE or EXCEL required)      aRowRec[iArrIdx].Defs :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)      aRowRec[iArrIdx].NotUsed :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)      aRowRec[iArrIdx].Height :
=  $80FF; 
Freeform Excel Worksheet (No OLE or EXCEL required)      iIdx :
=  FRowHeights.IndexOf(IntToStr(aRowRec[iArrIdx].RowIdx)); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  iIdx  <>   - 1  then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)        iHeight :
=  word(FRowHeights.Objects[iIdx]); 
Freeform Excel Worksheet (No OLE or EXCEL required)        
if  iHeight  <>   0  then aRowRec[iArrIdx].Height : =  iHeight  *   20
Freeform Excel Worksheet (No OLE or EXCEL required)      end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      
if  iArrIdx  =   0  then 
Freeform Excel Worksheet (No OLE or EXCEL required)        aRowRec[iArrIdx].OSet :
=  (iCount  -  iLoop)  *  
Freeform Excel Worksheet (No OLE or EXCEL required)                                 (SizeOf(TRowRec) 
+   4
Freeform Excel Worksheet (No OLE or EXCEL required)      
else  
Freeform Excel Worksheet (No OLE or EXCEL required)        aRowRec[iArrIdx].OSet :
=  word(FUsedRows.Objects[i  -   1 ]); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)      _WriteToken(XL_ROW,SizeOf(TRowRec)); 
Freeform Excel Worksheet (No OLE or EXCEL required)      BlockWrite(FFile,aRowRec[iArrIdx],SizeOf(TRowRec)); 
Freeform Excel Worksheet (No OLE or EXCEL required)      inc(iArrIdx); 
Freeform Excel Worksheet (No OLE or EXCEL required)    end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)    _SaveCells(aRowRec[
0 ].RowIdx,aRowRec[high(aRowRec)].RowIdx); 
Freeform Excel Worksheet (No OLE or EXCEL required)    SetLength(aRowRec,
0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    iLoop :
=  iLoop  +  (iCount  -  iLoop  +   1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    
if  iLoop  >=  FUsedRows.Count  -   1  then  break
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Write WINDOW1 Record 
Freeform Excel Worksheet (No OLE or EXCEL required)
  BlockWrite(FFile,aWINDOW1,SizeOf(aWINDOW1)); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL - Write out non-default column widths as 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  set by ColumnWidth() 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SaveColWidths; 
Freeform Excel Worksheet (No OLE or EXCEL required)var i : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)    iCol : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)    iWidth : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  
for  i : =   0  to FColWidths.Count  -   1   do  begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    iCol :
=  StrToInt(FColWidths[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)    iWidth :
=   256   *  word(FColWidths.Objects[i]); 
Freeform Excel Worksheet (No OLE or EXCEL required)    _WriteToken(XL_COLWIDTH,
4 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    Blockwrite(FFile,iCol,
1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    Blockwrite(FFile,iCol,
1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)    Blockwrite(FFile,iWidth,
2 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL Base Font Setting Method - Default and 1..3 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet._SetFont(AFontNum : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)                                   
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                   AFontSize : 
byte
Freeform Excel Worksheet (No OLE or EXCEL required)                                   AFontStyle : TFontStyles; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                   AFontColor : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iAttr : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  iAttr :
=   0
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  fsBold  in  AFontStyle then iAttr : =  iAttr or  1
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  fsItalic  in  AFontStyle then iAttr : =  iAttr or  2
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  fsUnderline  in  AFontStyle then iAttr : =  iAttr or  4
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  fsStrikeOut  in  AFontStyle then iAttr : =  iAttr or  8
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  trim(AFontName)  +   ' | '   +  IntToStr(AFontSize)  +  
Freeform Excel Worksheet (No OLE or EXCEL required)          
' | '   +  IntToStr(iAttr); 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable[AFontNum] :
=  sKey; 
Freeform Excel Worksheet (No OLE or EXCEL required)  FFontTable.Objects[AFontNum] :
=  TObject(AFontColor); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  INTERNAL Base Font Get Info Method - Default and 1..3 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ======================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet._GetFont(AFontNum : 
byte ) : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)var rResult : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iStyle : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  rResult.FontStyle :
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  AFontNum  >   3  then AFontNum : =   3
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  FFontTable[AFontNum]; 
Freeform Excel Worksheet (No OLE or EXCEL required)  rResult.FontName :
=  copy(skey, 1 ,pos( ' | ' ,sKey)  -   1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  copy(sKey,pos( ' | ' ,skey)  +   1 , 2096 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  rResult.FontSize :
=  StrToInt(copy(sKey, 1 ,pos( ' | ' ,sKey)  -   1 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)  iStyle :
=  StrToInt(copy(sKey,pos( ' | ' ,skey)  +   1 , 2096 )); 
Freeform Excel Worksheet (No OLE or EXCEL required)  rResult.FontColor :
=  integer(FFontTable.Objects[AFontNum]); 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  iStyle and  1   =   1  then include(rResult.FontStyle,fsBold); 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  iStyle and  2   =   2  then include(rResult.FontStyle,fsItalic); 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  iStyle and  4   =   4  then include(rResult.FontStyle,fsUnderline); 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  iStyle and  8   =   8  then include(rResult.FontStyle,fsStrikeOut); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  rResult; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  PUBLIC - Font Setting Methods 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.SetFont_Default(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                          AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                                          AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                          AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  _SetFont(XL_FONT_DEFAULT,AFontName,AFontSize,AFontStyle,AFontColor); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.SetFont_1(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  _SetFont(XL_FONT_1,AFontName,AFontSize,AFontStyle,AFontColor); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.SetFont_2(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  _SetFont(XL_FONT_2,AFontName,AFontSize,AFontStyle,AFontColor); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.SetFont_3(
const  AFontName :  string
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontSize : 
byte   =   10
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontStyle : TFontStyles 
=  []; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                    AFontColor : word 
=   0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  _SetFont(XL_FONT_3,AFontName,AFontSize,AFontStyle,AFontColor); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ====================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  PUBLIC - Font Get Information Methods 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ====================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet.GetFont_Default : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  _GetFont(XL_FONT_DEFAULT); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet.GetFont_1 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  _GetFont(XL_FONT_1); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet.GetFont_2 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  _GetFont(XL_FONT_2); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet.GetFont_3 : TExcelFont; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  _GetFont(XL_FONT_3); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Set a single column width 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ===================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.ColumnWidth(ACol : 
byte ; AWidth : word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iIdx : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  IntToStr(ACol); 
Freeform Excel Worksheet (No OLE or EXCEL required)  iIdx :
=  FColWidths.IndexOf(sKey); 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  AWidth  >   255  then AWidth : =   255
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  iIdx  <>   - 1  then 
Freeform Excel Worksheet (No OLE or EXCEL required)    FColWidths.Objects[iIdx] :
=  TObject(AWidth) 
Freeform Excel Worksheet (No OLE or EXCEL required)  
else  
Freeform Excel Worksheet (No OLE or EXCEL required)    FColWidths.AddObject(sKey,TObject(AWidth)); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ============================ 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Set a single row height 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ============================ 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.RowHeight(ARow : word; AHeight : 
byte ); 
Freeform Excel Worksheet (No OLE or EXCEL required)var sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iIdx : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  IntToStr(ARow); 
Freeform Excel Worksheet (No OLE or EXCEL required)  iIdx :
=  FRowHeights.IndexOf(sKey); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  iIdx  <>   - 1  then 
Freeform Excel Worksheet (No OLE or EXCEL required)    FRowHeights.Objects[iIdx] :
=  TObject(AHeight) 
Freeform Excel Worksheet (No OLE or EXCEL required)  
else  
Freeform Excel Worksheet (No OLE or EXCEL required)    FRowHeights.AddObject(sKey,TObject(AHeight)); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Get a cell info object 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  NOTE : A reference to the object is returned. 
Freeform Excel Worksheet (No OLE or EXCEL required)
//         No need for user to FREE the object 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ================================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet.GetCell(ACol,ARow :word) : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)var oResult : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iIndex : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  IntToHex(ARow, 4 +  IntToHex(ACol, 4 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Existing ? 
Freeform Excel Worksheet (No OLE or EXCEL required)
   if  FCells.Find(sKey,iIndex) then 
Freeform Excel Worksheet (No OLE or EXCEL required)    oResult :
=  TExcelCell(FCells.Objects[iIndex]) 
Freeform Excel Worksheet (No OLE or EXCEL required)  
else  
Freeform Excel Worksheet (No OLE or EXCEL required)    oResult :
=  nil; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  oResult; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ==================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Add or replace a cell in the worksheet 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  NOTE : A reference to the object is returned. 
Freeform Excel Worksheet (No OLE or EXCEL required)
//         No need for user to FREE the object 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ==================================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)function TExcelWorkSheet.NewCell(ACol,ARow :word) : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)var oResult : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iIndex : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  oResult :
=  TExcelCell.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oResult.FRow :
=  ARow; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oResult.FCol :
=  ACol; 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  ACol  >   255  then oResult.FCol : =   255
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  IntToHex(ARow, 4 +  IntToHex(ACol, 4 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Existing ? 
Freeform Excel Worksheet (No OLE or EXCEL required)
   if  FCells.Find(sKey,iIndex) then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    TExcelCell(FCells.Objects[iIndex]).Free; 
Freeform Excel Worksheet (No OLE or EXCEL required)    FCells.Objects[iIndex] :
=  oResult; 
Freeform Excel Worksheet (No OLE or EXCEL required)  end 
Freeform Excel Worksheet (No OLE or EXCEL required)  
else  
Freeform Excel Worksheet (No OLE or EXCEL required)    FCells.AddObject(sKey,oResult); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  Result :
=  oResult; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Blanks out a cell in the worksheet 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ========================================= 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.BlankCell(ACol,ARow :word); 
Freeform Excel Worksheet (No OLE or EXCEL required)var sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iIndex : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  IntToHex(ARow, 4 +  IntToHex(ACol, 4 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Existing ? 
Freeform Excel Worksheet (No OLE or EXCEL required)
   if  FCells.Find(sKey,iIndex) then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    TExcelCell(FCells.Objects[iIndex]).Free; 
Freeform Excel Worksheet (No OLE or EXCEL required)    FCells.Delete(iIndex); 
Freeform Excel Worksheet (No OLE or EXCEL required)  end; 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  =========================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Procedural way to add or change a cell 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  =========================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.SetCell(ACol,ARow : word; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                  ADataType : TExcelDataType; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                  AData : Olevariant; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                  AFontIndex : 
byte   =   0
Freeform Excel Worksheet (No OLE or EXCEL required)                                  AFormatString : 
string   =   ' General '
Freeform Excel Worksheet (No OLE or EXCEL required)                                  AAlign : TExcelCellAlign 
=  xalGeneral; 
Freeform Excel Worksheet (No OLE or EXCEL required)                                  AHasPattern : boolean 
=   false
Freeform Excel Worksheet (No OLE or EXCEL required)                                  ABorderStyle : TExcelBorders 
=  []); 
Freeform Excel Worksheet (No OLE or EXCEL required)var oCell : TExcelCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)    sKey : 
string
Freeform Excel Worksheet (No OLE or EXCEL required)    iIndex : integer; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell :
=  TExcelCell.Create; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.FRow :
=  ARow; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.FCol :
=  ACol; 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  ACol  >   255  then ACol : =   255
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.DataType :
=  ADataType; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.Data :
=  AData; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.FontIndex :
=  AFontIndex; 
Freeform Excel Worksheet (No OLE or EXCEL required)  
if  AFontIndex  >   3  then oCell.FontIndex : =   3
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.FormatString :
=  AFormatString; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.Align :
=  AAlign; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.HasPattern :
=  AHasPattern; 
Freeform Excel Worksheet (No OLE or EXCEL required)  oCell.BorderStyle :
=  ABorderStyle; 
Freeform Excel Worksheet (No OLE or EXCEL required)  sKey :
=  IntToHex(ARow, 4 +  IntToHex(ACol, 4 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  Existing ? 
Freeform Excel Worksheet (No OLE or EXCEL required)
   if  FCells.Find(sKey,iIndex) then begin 
Freeform Excel Worksheet (No OLE or EXCEL required)    TExcelCell(FCells.Objects[iIndex]).Free; 
Freeform Excel Worksheet (No OLE or EXCEL required)    FCells.Objects[iIndex] :
=  oCell; 
Freeform Excel Worksheet (No OLE or EXCEL required)  end 
Freeform Excel Worksheet (No OLE or EXCEL required)  
else  
Freeform Excel Worksheet (No OLE or EXCEL required)    FCells.AddObject(sKey,oCell); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ==================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  Save Worksheet as an XLS file 
Freeform Excel Worksheet (No OLE or EXCEL required)
//  ==================================== 
Freeform Excel Worksheet (No OLE or EXCEL required)

Freeform Excel Worksheet (No OLE or EXCEL required)procedure TExcelWorkSheet.SaveToFile(
const  AFileName :  string ); 
Freeform Excel Worksheet (No OLE or EXCEL required)var aWord : array [
0 .. 1 ] of word; 
Freeform Excel Worksheet (No OLE or EXCEL required)begin 
Freeform Excel Worksheet (No OLE or EXCEL required)  AssignFile(FFile,ChangeFileExt(AFileName,
' .xls ' )); 
Freeform Excel Worksheet (No OLE or EXCEL required)  Rewrite(FFile,
1 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  BOF 
Freeform Excel Worksheet (No OLE or EXCEL required)
  _WriteToken(XL_BOF, 4 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  aWord[
0 ] : =   0
Freeform Excel Worksheet (No OLE or EXCEL required)  aWord[
1 ] : =  XL_DOCUMENT; 
Freeform Excel Worksheet (No OLE or EXCEL required)  Blockwrite(FFile,aWord,SizeOf(aWord)); 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  FONT 
Freeform Excel Worksheet (No OLE or EXCEL required)
  _SaveFontTable; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  COLWIDTH 
Freeform Excel Worksheet (No OLE or EXCEL required)
  _SaveColWidths; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  COLFORMATS 
Freeform Excel Worksheet (No OLE or EXCEL required)
  _SaveFormats; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  DIMENSIONS 
Freeform Excel Worksheet (No OLE or EXCEL required)
  _SaveDimensions; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  CELLS 
Freeform Excel Worksheet (No OLE or EXCEL required)
   if  FRowHeights.Count  >   0  then 
Freeform Excel Worksheet (No OLE or EXCEL required)    _SaveRowBlocks          
//  Slower 
Freeform Excel Worksheet (No OLE or EXCEL required)
   else  
Freeform Excel Worksheet (No OLE or EXCEL required)    _SaveCells(
0 ,$FFFF);     //  Faster 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)  
//  EOF 
Freeform Excel Worksheet (No OLE or EXCEL required)
  _WriteToken(XL_EOF, 0 ); 
Freeform Excel Worksheet (No OLE or EXCEL required)  CloseFile(FFile); 
Freeform Excel Worksheet (No OLE or EXCEL required)end; 
Freeform Excel Worksheet (No OLE or EXCEL required)
Freeform Excel Worksheet (No OLE or EXCEL required)end. 
Freeform Excel Worksheet (No OLE or EXCEL required)

 

你可能感兴趣的:(require)