diff --git a/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi b/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi
index 749b9c68c..8a87e8e29 100644
--- a/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi
+++ b/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi
@@ -46,7 +46,7 @@
-
+
@@ -60,18 +60,18 @@
-
+
-
+
-
-
-
+
+
+
@@ -79,12 +79,9 @@
-
-
-
-
-
-
+
+
+
@@ -161,10 +158,12 @@
+
-
-
-
+
+
+
+
@@ -176,10 +175,12 @@
+
-
-
+
+
+
@@ -192,11 +193,14 @@
-
+
-
-
-
+
+
+
+
+
+
@@ -217,10 +221,12 @@
+
-
-
-
+
+
+
+
@@ -249,124 +255,124 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
diff --git a/components/fpspreadsheet/fpsopendocument.pas b/components/fpspreadsheet/fpsopendocument.pas
index b6c807baf..46261a56e 100755
--- a/components/fpspreadsheet/fpsopendocument.pas
+++ b/components/fpspreadsheet/fpsopendocument.pas
@@ -57,14 +57,15 @@ type
function GetAttrValue(ANode : TDOMNode; AAttrName : string) : string;
// Figures out what the base year for times in this file (dates are unambiguous)
procedure ReadDateMode(SpreadSheetNode: TDOMNode);
- public
- { General reading methods }
- procedure ReadFromFile(AFileName: string; AData: TsWorkbook); override;
+ protected
{ Record writing methods }
procedure ReadFormula(ARow : Word; ACol : Word; ACellNode: TDOMNode);
procedure ReadLabel(ARow : Word; ACol : Word; ACellNode: TDOMNode);
procedure ReadNumber(ARow : Word; ACol : Word; ACellNode: TDOMNode);
procedure ReadDate(ARow : Word; ACol : Word; ACellNode: TDOMNode);
+ public
+ { General reading methods }
+ procedure ReadFromFile(AFileName: string; AData: TsWorkbook); override;
end;
{ TsSpreadOpenDocWriter }
@@ -88,6 +89,11 @@ type
procedure WriteWorksheet(CurSheet: TsWorksheet);
// Routines to write parts of those files
function WriteStylesXMLAsString: string;
+ { Record writing methods }
+ procedure WriteFormula(AStream: TStream; const ARow, ACol: Cardinal; const AFormula: TsFormula; ACell: PCell); override;
+ procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); override;
+ procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); override;
+ procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); override;
public
constructor Create; override;
{ General writing methods }
@@ -95,11 +101,6 @@ type
procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
const AOverwriteExisting: Boolean = False); override;
procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
- { Record writing methods }
- procedure WriteFormula(AStream: TStream; const ARow, ACol: Cardinal; const AFormula: TsFormula; ACell: PCell); override;
- procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); override;
- procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); override;
- procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); override;
end;
implementation
diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas
index 99ac07219..f156a3516 100755
--- a/components/fpspreadsheet/fpspreadsheet.pas
+++ b/components/fpspreadsheet/fpspreadsheet.pas
@@ -368,16 +368,16 @@ type
protected
FWorkbook: TsWorkbook;
FWorksheet: TsWorksheet;
+ { Record reading methods }
+ procedure ReadFormula(AStream: TStream); virtual; abstract;
+ procedure ReadLabel(AStream: TStream); virtual; abstract;
+ procedure ReadNumber(AStream: TStream); virtual; abstract;
public
constructor Create; virtual; // To allow descendents to override it
{ General writing methods }
procedure ReadFromFile(AFileName: string; AData: TsWorkbook); virtual;
procedure ReadFromStream(AStream: TStream; AData: TsWorkbook); virtual;
procedure ReadFromStrings(AStrings: TStrings; AData: TsWorkbook); virtual;
- { Record reading methods }
- procedure ReadFormula(AStream: TStream); virtual; abstract;
- procedure ReadLabel(AStream: TStream); virtual; abstract;
- procedure ReadNumber(AStream: TStream); virtual; abstract;
end;
{@@ TsSpreadWriter class reference type }
@@ -389,6 +389,23 @@ type
{ TsCustomSpreadWriter }
TsCustomSpreadWriter = class
+ protected
+ { Helper routines }
+ procedure AddDefaultFormats(); virtual;
+ function ExpandFormula(AFormula: TsFormula): TsExpandedFormula;
+ function FindFormattingInList(AFormat: PCell): Integer;
+ function FPSColorToHexString(AColor: TsColor; ARGBColor: TFPColor): string;
+ procedure ListAllFormattingStylesCallback(ACell: PCell; AStream: TStream);
+ procedure ListAllFormattingStyles(AData: TsWorkbook);
+ { Helpers for writing }
+ procedure WriteCellCallback(ACell: PCell; AStream: TStream);
+ procedure WriteCellsToStream(AStream: TStream; ACells: TAVLTree);
+ { Record writing methods }
+ procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); virtual; abstract;
+ procedure WriteFormula(AStream: TStream; const ARow, ACol: Cardinal; const AFormula: TsFormula; ACell: PCell); virtual;
+ procedure WriteRPNFormula(AStream: TStream; const ARow, ACol: Cardinal; const AFormula: TsRPNFormula; ACell: PCell); virtual;
+ procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); virtual; abstract;
+ procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); virtual; abstract;
public
{@@
An array with cells which are models for the used styles
@@ -397,27 +414,12 @@ type
FFormattingStyles: array of TCell;
NextXFIndex: Integer; // Indicates which should be the next XF (Style) Index when filling the styles list
constructor Create; virtual; // To allow descendents to override it
- { Helper routines }
- function FindFormattingInList(AFormat: PCell): Integer;
- procedure AddDefaultFormats(); virtual;
- procedure ListAllFormattingStylesCallback(ACell: PCell; AStream: TStream);
- procedure ListAllFormattingStyles(AData: TsWorkbook);
- function ExpandFormula(AFormula: TsFormula): TsExpandedFormula;
- function FPSColorToHexString(AColor: TsColor; ARGBColor: TFPColor): string;
{ General writing methods }
- procedure WriteCellCallback(ACell: PCell; AStream: TStream);
- procedure WriteCellsToStream(AStream: TStream; ACells: TAVLTree);
procedure IterateThroughCells(AStream: TStream; ACells: TAVLTree; ACallback: TCellsCallback);
procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
const AOverwriteExisting: Boolean = False); virtual;
procedure WriteToStream(AStream: TStream; AData: TsWorkbook); virtual;
procedure WriteToStrings(AStrings: TStrings; AData: TsWorkbook); virtual;
- { Record writing methods }
- procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); virtual; abstract;
- procedure WriteFormula(AStream: TStream; const ARow, ACol: Cardinal; const AFormula: TsFormula; ACell: PCell); virtual;
- procedure WriteRPNFormula(AStream: TStream; const ARow, ACol: Cardinal; const AFormula: TsRPNFormula; ACell: PCell); virtual;
- procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); virtual; abstract;
- procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); virtual; abstract;
end;
{@@ List of registered formats }
diff --git a/components/fpspreadsheet/xlsbiff2.pas b/components/fpspreadsheet/xlsbiff2.pas
index a2fb680b2..5fbddf7b0 100755
--- a/components/fpspreadsheet/xlsbiff2.pas
+++ b/components/fpspreadsheet/xlsbiff2.pas
@@ -46,14 +46,15 @@ type
RecordSize: Word;
FWorksheet: TsWorksheet;
procedure ReadRowInfo(AStream: TStream);
- public
- { General reading methods }
- procedure ReadFromStream(AStream: TStream; AData: TsWorkbook); override;
+ protected
{ Record writing methods }
procedure ReadFormula(AStream: TStream); override;
procedure ReadLabel(AStream: TStream); override;
procedure ReadNumber(AStream: TStream); override;
procedure ReadInteger(AStream: TStream);
+ public
+ { General reading methods }
+ procedure ReadFromStream(AStream: TStream; AData: TsWorkbook); override;
end;
{ TsSpreadBIFF2Writer }
@@ -61,9 +62,6 @@ type
TsSpreadBIFF2Writer = class(TsSpreadBIFFWriter)
private
procedure WriteCellFormatting(AStream: TStream; ACell: PCell);
- public
- { General writing methods }
- procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
{ Record writing methods }
procedure WriteBOF(AStream: TStream);
procedure WriteEOF(AStream: TStream);
@@ -71,6 +69,9 @@ type
procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); override;
procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); override;
procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); override;
+ public
+ { General writing methods }
+ procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
end;
implementation
diff --git a/components/fpspreadsheet/xlsbiff5.pas b/components/fpspreadsheet/xlsbiff5.pas
index 9b6986c16..1c53a5ef3 100755
--- a/components/fpspreadsheet/xlsbiff5.pas
+++ b/components/fpspreadsheet/xlsbiff5.pas
@@ -81,24 +81,25 @@ type
FWorksheet: TsWorksheet;
FWorksheetNames: TStringList;
FCurrentWorksheet: Integer;
+ protected
+ { Helpers }
+ function DecodeRKValue(const ARK: DWORD): Double;
+ { Record writing methods }
+ procedure ReadFormula(AStream: TStream); override;
+ procedure ReadFormulaExcel(AStream: TStream);
+ procedure ReadLabel(AStream: TStream); override;
+ procedure ReadMulRKValues(AStream: TStream);
+ procedure ReadNumber(AStream: TStream); override;
procedure ReadWorkbookGlobals(AStream: TStream; AData: TsWorkbook);
procedure ReadWorksheet(AStream: TStream; AData: TsWorkbook);
procedure ReadBoundsheet(AStream: TStream);
procedure ReadRichString(AStream: TStream);
procedure ReadRKValue(AStream: TStream);
- procedure ReadMulRKValues(AStream: TStream);
- procedure ReadFormulaExcel(AStream: TStream);
- protected
- function DecodeRKValue(const ARK: DWORD): Double;
procedure ReadRowColXF(const AStream: TStream; out ARow,ACol,AXF: WORD); virtual;
public
{ General reading methods }
procedure ReadFromFile(AFileName: string; AData: TsWorkbook); override;
procedure ReadFromStream(AStream: TStream; AData: TsWorkbook); override;
- { Record writing methods }
- procedure ReadFormula(AStream: TStream); override;
- procedure ReadLabel(AStream: TStream); override;
- procedure ReadNumber(AStream: TStream); override;
end;
{ TsSpreadBIFF5Writer }
@@ -106,13 +107,7 @@ type
TsSpreadBIFF5Writer = class(TsSpreadBIFFWriter)
private
WorkBookEncoding: TsEncoding;
- public
-// constructor Create;
-// destructor Destroy; override;
- { General writing methods }
- procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
- const AOverwriteExisting: Boolean = False); override;
- procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
+ protected
{ Record writing methods }
procedure WriteBOF(AStream: TStream; ADataType: Word);
function WriteBoundsheet(AStream: TStream; ASheetName: string): Int64;
@@ -129,6 +124,11 @@ type
procedure WriteWindow1(AStream: TStream);
procedure WriteWindow2(AStream: TStream; ASheetSelected: Boolean);
procedure WriteXF(AStream: TStream; AFontIndex: Word; AXF_TYPE_PROT: Byte);
+ public
+ { General writing methods }
+ procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
+ const AOverwriteExisting: Boolean = False); override;
+ procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
end;
implementation
diff --git a/components/fpspreadsheet/xlsbiff8.pas b/components/fpspreadsheet/xlsbiff8.pas
index 3e3224be4..634aeaef9 100755
--- a/components/fpspreadsheet/xlsbiff8.pas
+++ b/components/fpspreadsheet/xlsbiff8.pas
@@ -159,23 +159,11 @@ type
procedure WriteXFFieldsForFormattingStyles(AStream: TStream);
protected
procedure AddDefaultFormats(); override;
- procedure WriteColInfo(AStream: TStream; ASheet: TsWorksheet; ACol: PCol);
- procedure WriteXF(AStream: TStream; AFontIndex: Word;
- AFormatIndex: Word; AXF_TYPE_PROT, ATextRotation: Byte; ABorders: TsCellBorders;
- AHorAlignment: TsHorAlignment = haDefault; AVertAlignment: TsVertAlignment = vaDefault;
- AWordWrap: Boolean = false; AddBackground: Boolean = false;
- ABackgroundColor: TsColor = scSilver);
- public
-// constructor Create;
-// destructor Destroy; override;
- { General writing methods }
- procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
- const AOverwriteExisting: Boolean = False); override;
- procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
{ Record writing methods }
procedure WriteBOF(AStream: TStream; ADataType: Word);
function WriteBoundsheet(AStream: TStream; ASheetName: string): Int64;
// procedure WriteCodepage in xlscommon; Workbook Globals record
+ procedure WriteColInfo(AStream: TStream; ASheet: TsWorksheet; ACol: PCol);
procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); override;
// procedure WriteDateMode in xlscommon; Workbook Globals record
procedure WriteDimensions(AStream: TStream; AWorksheet: TsWorksheet);
@@ -190,6 +178,18 @@ type
procedure WriteStyle(AStream: TStream);
procedure WriteWindow1(AStream: TStream);
procedure WriteWindow2(AStream: TStream; ASheetSelected: Boolean);
+ procedure WriteXF(AStream: TStream; AFontIndex: Word;
+ AFormatIndex: Word; AXF_TYPE_PROT, ATextRotation: Byte; ABorders: TsCellBorders;
+ AHorAlignment: TsHorAlignment = haDefault; AVertAlignment: TsVertAlignment = vaDefault;
+ AWordWrap: Boolean = false; AddBackground: Boolean = false;
+ ABackgroundColor: TsColor = scSilver);
+ public
+// constructor Create;
+// destructor Destroy; override;
+ { General writing methods }
+ procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
+ const AOverwriteExisting: Boolean = False); override;
+ procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
end;
implementation
diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas
index 835a871fe..ba38f1885 100755
--- a/components/fpspreadsheet/xlsxooxml.pas
+++ b/components/fpspreadsheet/xlsxooxml.pas
@@ -63,6 +63,11 @@ type
procedure WriteContent(AData: TsWorkbook);
procedure WriteWorksheet(CurSheet: TsWorksheet);
function GetStyleIndex(ACell: PCell): Cardinal;
+ { Record writing methods }
+ //todo: add WriteDate
+ procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); override;
+ procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); override;
+ procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); override;
public
constructor Create; override;
destructor Destroy; override;
@@ -71,11 +76,6 @@ type
procedure WriteToFile(const AFileName: string; AData: TsWorkbook;
const AOverwriteExisting: Boolean = False); override;
procedure WriteToStream(AStream: TStream; AData: TsWorkbook); override;
- { Record writing methods }
- //todo: add WriteDate
- procedure WriteLabel(AStream: TStream; const ARow, ACol: Cardinal; const AValue: string; ACell: PCell); override;
- procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); override;
- procedure WriteDateTime(AStream: TStream; const ARow, ACol: Cardinal; const AValue: TDateTime; ACell: PCell); override;
end;
implementation