diff --git a/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi b/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi index f364ff07f..a00db4c28 100644 --- a/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi +++ b/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi @@ -27,13 +27,10 @@ - + - - - - + @@ -46,7 +43,6 @@ - diff --git a/components/fpspreadsheet/examples/excel2demo/excel2read.lpi b/components/fpspreadsheet/examples/excel2demo/excel2read.lpi index 2357a4b54..044140276 100644 --- a/components/fpspreadsheet/examples/excel2demo/excel2read.lpi +++ b/components/fpspreadsheet/examples/excel2demo/excel2read.lpi @@ -32,31 +32,35 @@ - + - + + + - - + + - - - + + + + + diff --git a/components/fpspreadsheet/examples/excel2demo/excel2read.lpr b/components/fpspreadsheet/examples/excel2demo/excel2read.lpr index 59ed9b8e4..9bfa7b7ac 100644 --- a/components/fpspreadsheet/examples/excel2demo/excel2read.lpr +++ b/components/fpspreadsheet/examples/excel2demo/excel2read.lpr @@ -10,7 +10,7 @@ program excel2read; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, xlsbiff2, laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, xlsbiff2; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/excel2demo/excel2write.lpi b/components/fpspreadsheet/examples/excel2demo/excel2write.lpi index b796af7d9..ec66770e0 100644 --- a/components/fpspreadsheet/examples/excel2demo/excel2write.lpi +++ b/components/fpspreadsheet/examples/excel2demo/excel2write.lpi @@ -32,7 +32,7 @@ - + @@ -45,14 +45,22 @@ + + + - - + + + + + + + diff --git a/components/fpspreadsheet/examples/excel2demo/excel2write.lpr b/components/fpspreadsheet/examples/excel2demo/excel2write.lpr index b45c93a2b..d30c9df58 100644 --- a/components/fpspreadsheet/examples/excel2demo/excel2write.lpr +++ b/components/fpspreadsheet/examples/excel2demo/excel2write.lpr @@ -10,7 +10,7 @@ program excel2write; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, xlsbiff2, laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, xlsbiff2; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/excel5demo/excel5read.lpi b/components/fpspreadsheet/examples/excel5demo/excel5read.lpi index 0adfe826e..41edc14e8 100644 --- a/components/fpspreadsheet/examples/excel5demo/excel5read.lpi +++ b/components/fpspreadsheet/examples/excel5demo/excel5read.lpi @@ -32,31 +32,35 @@ - + - + + + - - + + - - - + + + + + diff --git a/components/fpspreadsheet/examples/excel5demo/excel5read.lpr b/components/fpspreadsheet/examples/excel5demo/excel5read.lpr index 436904ae0..4c8880725 100644 --- a/components/fpspreadsheet/examples/excel5demo/excel5read.lpr +++ b/components/fpspreadsheet/examples/excel5demo/excel5read.lpr @@ -10,8 +10,7 @@ program excel5read; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, xlsbiff5, - laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, xlsbiff5; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/excel5demo/excel5write.lpi b/components/fpspreadsheet/examples/excel5demo/excel5write.lpi index de70f87d8..f7ff59409 100644 --- a/components/fpspreadsheet/examples/excel5demo/excel5write.lpi +++ b/components/fpspreadsheet/examples/excel5demo/excel5write.lpi @@ -32,31 +32,35 @@ - + - + + + - - + + - - - + + + + + diff --git a/components/fpspreadsheet/examples/excel8demo/excel8read.lpr b/components/fpspreadsheet/examples/excel8demo/excel8read.lpr index 23a59067a..a2065c1dd 100644 --- a/components/fpspreadsheet/examples/excel8demo/excel8read.lpr +++ b/components/fpspreadsheet/examples/excel8demo/excel8read.lpr @@ -36,7 +36,7 @@ begin // Create the spreadsheet MyWorkbook := TsWorkbook.Create; - MyWorkbook.ReadFormulas := true; + MyWorkbook.Options := MyWorkbook.Options + [boReadFormulas, boAutoCalc]; MyWorkbook.ReadFromFile(InputFilename, sfExcel8); diff --git a/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpi b/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpi index 484d5ec88..eff9a9a72 100644 --- a/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpi +++ b/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpi @@ -32,7 +32,7 @@ - + @@ -45,14 +45,22 @@ + + + - - + + + + + + + diff --git a/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpr b/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpr index 32f76ab01..dec327388 100644 --- a/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpr +++ b/components/fpspreadsheet/examples/ooxmldemo/ooxmlwrite.lpr @@ -10,7 +10,7 @@ program ooxmlwrite; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, fpsallformats, laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, fpsallformats; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/opendocdemo/opendocread.lpi b/components/fpspreadsheet/examples/opendocdemo/opendocread.lpi index 2b383bdaf..d161ba808 100644 --- a/components/fpspreadsheet/examples/opendocdemo/opendocread.lpi +++ b/components/fpspreadsheet/examples/opendocdemo/opendocread.lpi @@ -32,7 +32,7 @@ - + @@ -51,12 +51,16 @@ - + + + + + diff --git a/components/fpspreadsheet/examples/opendocdemo/opendocread.lpr b/components/fpspreadsheet/examples/opendocdemo/opendocread.lpr index eb4af43fd..89b673173 100644 --- a/components/fpspreadsheet/examples/opendocdemo/opendocread.lpr +++ b/components/fpspreadsheet/examples/opendocdemo/opendocread.lpr @@ -11,8 +11,7 @@ program opendocread; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, fpsallformats, - laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, fpsallformats; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpi b/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpi index 49ad37280..ce2de4812 100644 --- a/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpi +++ b/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpi @@ -32,7 +32,7 @@ - + @@ -45,14 +45,22 @@ + + + - - + + + + + + + diff --git a/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr b/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr index cd5b83481..1fa50146e 100644 --- a/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr +++ b/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr @@ -10,8 +10,7 @@ program opendocwrite; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, fpsallformats, - laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, fpsallformats; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/other/demo_formula_func.pas b/components/fpspreadsheet/examples/other/demo_formula_func.pas index e2e86580f..de09e0dad 100644 --- a/components/fpspreadsheet/examples/other/demo_formula_func.pas +++ b/components/fpspreadsheet/examples/other/demo_formula_func.pas @@ -317,7 +317,7 @@ var begin workbook := TsWorkbook.Create; try - workbook.ReadFormulas := true; + workbook.Options := workbook.Options + [boReadFormulas]; workbook.ReadFromFile(AFilename, sfExcel8); worksheet := workbook.GetFirstWorksheet; diff --git a/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpi b/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpi index f129d363c..7bf90ebc9 100644 --- a/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpi +++ b/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpi @@ -31,7 +31,7 @@ - + @@ -44,13 +44,23 @@ + + + + + + + + + + diff --git a/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpr b/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpr index b05cd02d0..5a85fbad4 100644 --- a/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpr +++ b/components/fpspreadsheet/examples/wikitabledemo/wikitableread.lpr @@ -11,7 +11,7 @@ program wikitableread; uses Classes, SysUtils, fpspreadsheet, wikitable, - laz_fpspreadsheet, fpsutils; + fpsutils; var MyWorkbook: TsWorkbook; diff --git a/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpi b/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpi index 815f73380..a02f90e05 100644 --- a/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpi +++ b/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpi @@ -32,7 +32,7 @@ - + @@ -45,14 +45,22 @@ + + + - - + + + + + + + diff --git a/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpr b/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpr index 567a6d7fc..e4eb7aac0 100644 --- a/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpr +++ b/components/fpspreadsheet/examples/wikitabledemo/wikitablewrite.lpr @@ -10,8 +10,7 @@ program wikitablewrite; {$mode delphi}{$H+} uses - Classes, SysUtils, fpspreadsheet, wikitable, - laz_fpspreadsheet; + Classes, SysUtils, fpspreadsheet, wikitable; const Str_First = 'First'; diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas index 6292eaa22..51f4545f3 100755 --- a/components/fpspreadsheet/fpspreadsheet.pas +++ b/components/fpspreadsheet/fpspreadsheet.pas @@ -764,8 +764,13 @@ type a cell value changes. @param boCalcBeforeSaving Calculates formulas before saving the file. Otherwise there are no results when the file is - loaded back by fpspreadsheet. } - TsWorkbookOption = (boVirtualMode, boBufStream, boAutoCalc, boCalcBeforeSaving); + loaded back by fpspreadsheet. + @param boReadFormulas Allows to turn on/off reading of formulas; this + is a precaution since formulas not or not fully + implemented by fpspreadsheet could crash the + reading operation. } + TsWorkbookOption = (boVirtualMode, boBufStream, + boAutoCalc, boCalcBeforeSaving, boReadFormulas); {@@ Set of options flags for the workbook } @@ -797,7 +802,6 @@ type FFontList: TFPList; FBuiltinFontCount: Integer; FPalette: array of TsColorValue; - FReadFormulas: Boolean; FDefaultColWidth: Single; // in "characters". Excel uses the width of char "0" in 1st font FDefaultRowHeight: Single; // in "character heights", i.e. line count FVirtualColCount: Cardinal; @@ -905,10 +909,6 @@ type property FileName: String read FFileName; {@@ Identifies the file format which was detected when reading the file } property FileFormat: TsSpreadsheetFormat read FFormat; - {@@ This property allows to turn off reading of rpn formulas; this is a - precaution since formulas not correctly implemented by fpspreadsheet - could crash the reading operation. } - property ReadFormulas: Boolean read FReadFormulas write FReadFormulas; property VirtualColCount: cardinal read FVirtualColCount write SetVirtualColCount; property VirtualRowCount: cardinal read FVirtualRowCount write SetVirtualRowCount; property Options: TsWorkbookOptions read FOptions write FOptions; diff --git a/components/fpspreadsheet/fpspreadsheetgrid.pas b/components/fpspreadsheet/fpspreadsheetgrid.pas index f483bb805..21d5d8265 100644 --- a/components/fpspreadsheet/fpspreadsheetgrid.pas +++ b/components/fpspreadsheet/fpspreadsheetgrid.pas @@ -923,7 +923,10 @@ procedure TsCustomWorksheetGrid.CreateNewWorkbook; begin FreeAndNil(FWorkbook); FWorkbook := TsWorkbook.Create; - FWorkbook.ReadFormulas := FReadFormulas; + if FReadFormulas then + FWorkbook.Options := FWorkbook.Options + [boReadFormulas] + else + FWorkbook.Options := FWorkbook.Options - [boReadFormulas]; SetAutoCalc(FAutoCalc); end; diff --git a/components/fpspreadsheet/tests/formulatests.pas b/components/fpspreadsheet/tests/formulatests.pas index cc8b5492a..60bad8ec4 100644 --- a/components/fpspreadsheet/tests/formulatests.pas +++ b/components/fpspreadsheet/tests/formulatests.pas @@ -101,7 +101,7 @@ begin // Open the spreadsheet MyWorkbook := TsWorkbook.Create; try - MyWorkbook.ReadFormulas := true; + MyWorkbook.Options := MyWorkbook.Options + [boReadFormulas]; MyWorkbook.ReadFromFile(TempFile, AFormat); if AFormat = sfExcel2 then diff --git a/components/fpspreadsheet/tests/spreadtestgui.lpi b/components/fpspreadsheet/tests/spreadtestgui.lpi index 7ffe3d091..873fd93e2 100644 --- a/components/fpspreadsheet/tests/spreadtestgui.lpi +++ b/components/fpspreadsheet/tests/spreadtestgui.lpi @@ -56,7 +56,6 @@ - @@ -65,7 +64,6 @@ - @@ -74,7 +72,6 @@ - @@ -106,17 +103,14 @@ - - - diff --git a/components/fpspreadsheet/xlsbiff2.pas b/components/fpspreadsheet/xlsbiff2.pas index bbd1b2150..07da28268 100755 --- a/components/fpspreadsheet/xlsbiff2.pas +++ b/components/fpspreadsheet/xlsbiff2.pas @@ -605,7 +605,7 @@ begin end; { Formula token array } - if FWorkbook.ReadFormulas then begin + if boReadFormulas in FWorkbook.Options then begin ok := ReadRPNTokenArray(AStream, cell); if not ok then FWorksheet.WriteErrorValue(cell, errFormulaNotSupported); end; diff --git a/components/fpspreadsheet/xlscommon.pas b/components/fpspreadsheet/xlscommon.pas index e45d8b84b..2d90b2b5e 100644 --- a/components/fpspreadsheet/xlscommon.pas +++ b/components/fpspreadsheet/xlscommon.pas @@ -1251,7 +1251,7 @@ begin end; { Formula token array } - if FWorkbook.ReadFormulas then begin + if boReadFormulas in FWorkbook.Options then begin ok := ReadRPNTokenArray(AStream, cell); if not ok then FWorksheet.WriteErrorValue(cell, errFormulaNotSupported);