diff --git a/components/fpspreadsheet/laz_fpspreadsheet.lpk b/components/fpspreadsheet/laz_fpspreadsheet.lpk
index 073db68c6..85f07ff24 100644
--- a/components/fpspreadsheet/laz_fpspreadsheet.lpk
+++ b/components/fpspreadsheet/laz_fpspreadsheet.lpk
@@ -33,7 +33,7 @@
This package is all you need if you don't want graphical components (such as grids and charts)."/>
-
+
@@ -309,6 +309,10 @@ This package is all you need if you don't want graphical components (such a
+
+
+
+
diff --git a/components/fpspreadsheet/source/common/fpsopendocument.pas b/components/fpspreadsheet/source/common/fpsopendocument.pas
index de3334ba3..37f985f53 100644
--- a/components/fpspreadsheet/source/common/fpsopendocument.pas
+++ b/components/fpspreadsheet/source/common/fpsopendocument.pas
@@ -41,16 +41,10 @@ uses
Classes, SysUtils,
laz2_xmlread, laz2_DOM,
avglvltree, math, dateutils, contnrs,
- {$IF FPC_FULLVERSION >= 20701}
- zipper,
- {$ELSE}
- fpszipper,
- {$ENDIF}
+ {$IFDEF FPS_PATCHED_ZIPPER} fpszipper, {$ELSE} zipper, {$ENDIF}
fpstypes, fpsReaderWriter, fpsUtils, fpsHeaderFooterParser,
fpsNumFormat, fpsXMLCommon,
- {$IFDEF FPS_CHARTS}
- fpsChart,
- {$ENDIF}
+ {$IFDEF FPS_CHARTS} fpsChart, {$ENDIF}
fpsPagelayout;
type
diff --git a/components/fpspreadsheet/source/common/fpsopendocumentchart.pas b/components/fpspreadsheet/source/common/fpsopendocumentchart.pas
index 23204c7d2..1ee0b20e9 100644
--- a/components/fpspreadsheet/source/common/fpsopendocumentchart.pas
+++ b/components/fpspreadsheet/source/common/fpsopendocumentchart.pas
@@ -9,10 +9,10 @@ interface
uses
Classes, SysUtils, StrUtils, Contnrs, FPImage,
- {$IF FPC_FULLVERSION >= 20701}
- zipper,
- {$ELSE}
+ {$IFDEF FPS_PATCHED_ZIPPER}
fpszipper,
+ {$ELSE}
+ zipper,
{$ENDIF}
laz2_xmlread, laz2_DOM,
fpsTypes, fpSpreadsheet, fpsChart, fpsUtils, fpsNumFormat,
diff --git a/components/fpspreadsheet/source/common/xlsxooxml.pas b/components/fpspreadsheet/source/common/xlsxooxml.pas
index b4e58fd46..554b7d3c5 100644
--- a/components/fpspreadsheet/source/common/xlsxooxml.pas
+++ b/components/fpspreadsheet/source/common/xlsxooxml.pas
@@ -37,13 +37,16 @@ interface
uses
Classes, SysUtils,
laz2_xmlread, laz2_DOM, avglvltree,
- {$IFDEF FPS_PATCHED_ZIPPER}
+ {$ifdef FPS_PATCHED_ZIPPER}
fpszipper,
- {$ELSE}
+ {$else}
zipper,
- {$ENDIF}
+ {$endif}
fpsTypes, fpsUtils, fpsReaderWriter, fpsNumFormat, fpsPalette,
fpsConditionalFormat,
+ {$ifdef FPS_CHARTS}
+ fpsChart,
+ {$ENDIF}
fpsxmlcommon, xlsCommon;
type
@@ -52,6 +55,9 @@ type
TsSpreadOOXMLReader = class(TsSpreadXMLReader)
private
+ {$ifdef FPS_CHARTS}
+ FChartReader: TsBasicSpreadChartReader;
+ {$endif}
FDateMode: TDateMode;
FPointSeparatorSettings: TFormatSettings;
FSharedStrings: TStringList;
@@ -155,6 +161,9 @@ type
TsSpreadOOXMLWriter = class(TsCustomSpreadWriter)
private
+ {$IFDEF FPS_CHARTS}
+ FChartWriter: TsBasicSpreadChartWriter;
+ {$ENDIF}
FFirstNumFormatIndexInFile: Integer;
vmlDrawingCounter: Integer;
protected
@@ -283,6 +292,7 @@ type
public
constructor Create(AWorkbook: TsBasicWorkbook); override;
+ destructor Destroy; override;
{ General writing methods }
procedure WriteStringToFile(AFileName, AString: string);
procedure WriteToStream(AStream: TStream; AParams: TsStreamParams = []); override;
@@ -308,7 +318,9 @@ implementation
uses
variants, strutils, dateutils, math, lazutf8, LazFileUtils, uriparser, typinfo,
{%H-}fpsPatches, fpSpreadsheet, fpsCrypto, fpsExprParser,
- fpsStrings, fpsStreams, fpsClasses, fpsImages, fpsChart;
+ fpsStrings, fpsStreams, fpsClasses,
+ {$ifdef FPS_CHARTS}xlsxooxmlChart,{$endif}
+ fpsImages;
const
{ OOXML general XML constants }
@@ -830,6 +842,11 @@ end;
constructor TsSpreadOOXMLReader.Create(AWorkbook: TsBasicWorkbook);
begin
inherited Create(AWorkbook);
+
+ {$ifdef FPS_CHARTS}
+ FChartReader := TsSpreadOOXMLChartReader.Create(self);
+ {$endif}
+
FDateMode := XlsxSettings.DateMode;
FSharedStrings := TStringList.Create;
@@ -898,6 +915,10 @@ begin
FPalette.Free;
+ {$ifdef FPS_CHARTS}
+ FChartReader.Free;
+ {$endif}
+
inherited Destroy;
end;
@@ -4629,6 +4650,10 @@ constructor TsSpreadOOXMLWriter.Create(AWorkbook: TsBasicWorkbook);
begin
inherited Create(AWorkbook);
+ {$ifdef FPS_CHARTS}
+ FChartWriter := TsSpreadOOXMLChartWriter.Create(self);
+ {$endif}
+
// Initial base date in case it won't be set otherwise.
// Use 1900 to get a bit more range between 1900..1904.
FDateMode := XlsxSettings.DateMode;
@@ -4641,6 +4666,15 @@ begin
end;
+destructor TsSpreadOOXMLWriter.Destroy;
+begin
+ {$ifdef FPS_CHARTS}
+ FChartWriter.Free;
+ {$endif}
+ inherited;
+end;
+
+
{@@ ----------------------------------------------------------------------------
Looks for the combination of border attributes of the given format record in
the FBorderList and returns its index.
diff --git a/components/fpspreadsheet/source/common/xlsxooxmlchart.pas b/components/fpspreadsheet/source/common/xlsxooxmlchart.pas
new file mode 100644
index 000000000..1d7aa9e74
--- /dev/null
+++ b/components/fpspreadsheet/source/common/xlsxooxmlchart.pas
@@ -0,0 +1,88 @@
+unit xlsxooxmlChart;
+
+{$mode objfpc}{$H+}
+{$include ..\fps.inc}
+
+interface
+
+{$ifdef FPS_CHARTS}
+
+uses
+ Classes, SysUtils, StrUtils, Contnrs, FPImage,
+ {$ifdef FPS_PATCHED_ZIPPER}fpszipper,{$else}zipper,{$endif}
+ laz2_xmlread, laz2_DOM,
+ fpsTypes, fpSpreadsheet, fpsChart, fpsUtils, fpsNumFormat,
+ fpsReaderWriter, fpsXMLCommon;
+
+type
+
+ { TsSpreadOOXMLChartReader }
+
+ TsSpreadOOXMLChartReader = class(TsBasicSpreadChartReader)
+ private
+ FPointSeparatorSettings: TFormatSettings;
+
+ protected
+
+ public
+ constructor Create(AReader: TsBasicSpreadReader); override;
+ destructor Destroy; override;
+
+ end;
+
+ TsSpreadOOXMLChartWriter = class(TsBasicSpreadChartWriter)
+ private
+ FPointSeparatorSettings: TFormatSettings;
+
+ protected
+
+ public
+ constructor Create(AWriter: TsBasicSpreadWriter); override;
+ destructor Destroy; override;
+
+ end;
+
+{$ENDIF}
+
+implementation
+
+{$IFDEF FPS_CHARTS}
+
+uses
+ xlsxooxml;
+
+{ TsSpreadOOXMLChartReader }
+
+constructor TsSpreadOOXMLChartReader.Create(AReader: TsBasicSpreadReader);
+begin
+ inherited Create(AReader);
+
+ FPointSeparatorSettings := SysUtils.DefaultFormatSettings;
+ FPointSeparatorSettings.DecimalSeparator:='.';
+end;
+
+destructor TsSpreadOOXMLChartReader.Destroy;
+begin
+ inherited;
+end;
+
+
+{ TsSpreadOOXMLChartWriter }
+
+constructor TsSpreadOOXMLChartWriter.Create(AWriter: TsBasicSpreadWriter);
+begin
+ inherited Create(AWriter);
+
+ FPointSeparatorSettings := SysUtils.DefaultFormatSettings;
+ FPointSeparatorSettings.DecimalSeparator:='.';
+end;
+
+destructor TsSpreadOOXMLChartWriter.Destroy;
+begin
+ inherited;
+end;
+
+{$ENDIF}
+
+end.
+