diff --git a/components/fpspreadsheet/source/common/fpsopendocument.pas b/components/fpspreadsheet/source/common/fpsopendocument.pas index 13c35c231..59676d3ac 100644 --- a/components/fpspreadsheet/source/common/fpsopendocument.pas +++ b/components/fpspreadsheet/source/common/fpsopendocument.pas @@ -2354,30 +2354,33 @@ begin end; Delete(formula, 1, p); end; - // ... convert to Excel "A1" dialect used by fps by defailt - parser := TsSpreadsheetParser.Create(FWorksheet); - try + if not (boIgnoreFormulas in FWorkbook.Options) then + begin + // ... convert to Excel "A1" dialect used by fps by defailt + parser := TsSpreadsheetParser.Create(FWorksheet); try - parser.Dialect := fdOpenDocument; - parser.LocalizedExpression[FPointSeparatorSettings] := formula; - parser.Dialect := fdExcelA1; - formula := parser.Expression; - except - on E:EExprParser do - begin - Workbook.AddErrorMsg(E.Message); - formula := ''; - if (boAbortReadOnFormulaError in Workbook.Options) then raise; - end; - on E:ECalcEngine do - begin - Workbook.AddErrorMsg(E.Message); - formula := ''; - if (boAbortReadOnFormulaError in Workbook.Options) then raise; + try + parser.Dialect := fdOpenDocument; + parser.LocalizedExpression[FPointSeparatorSettings] := formula; + parser.Dialect := fdExcelA1; + formula := parser.Expression; + except + on E:EExprParser do + begin + Workbook.AddErrorMsg(E.Message); + formula := ''; + if (boAbortReadOnFormulaError in Workbook.Options) then raise; + end; + on E:ECalcEngine do + begin + Workbook.AddErrorMsg(E.Message); + formula := ''; + if (boAbortReadOnFormulaError in Workbook.Options) then raise; + end; end; + finally + parser.Free; end; - finally - parser.Free; end; // ... and store in cell's FormulaValue field. cell^.FormulaValue := formula;