From 8adcbb27cd4ccdb7bac32a9c9af427410decae8a Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 15 May 2018 12:05:18 +0000 Subject: [PATCH] fpspreadsheet: Fix creation of erratic sheets by XLSX reader if not-yet-existing sheets are referenced in formulas during reading. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6415 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/fpspreadsheet/source/common/fpsexprparser.pas | 4 ---- components/fpspreadsheet/source/common/xlsxooxml.pas | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/components/fpspreadsheet/source/common/fpsexprparser.pas b/components/fpspreadsheet/source/common/fpsexprparser.pas index 2c9766f0d..e82a85211 100644 --- a/components/fpspreadsheet/source/common/fpsexprparser.pas +++ b/components/fpspreadsheet/source/common/fpsexprparser.pas @@ -1774,8 +1774,6 @@ begin Result := TsCellExprNode.Create(self, FWorksheet, r1, c1, flags, false) else begin sheet := FWorksheet.Workbook.GetWorksheetByName(sheetName); - if sheet = nil then - sheet := FWorksheet.Workbook.AddWorksheet(sheetname, true); Result := TsCellExprNode.Create(self, sheet, r1, c1, flags, true); end; end @@ -1789,8 +1787,6 @@ begin GetToken; if TokenType = ttCell then begin sheet := FWorksheet.Workbook.GetWorksheetByName(sheetName); - if sheet = nil then - sheet := FWorksheet.Workbook.AddWorksheet(sheetName, true); Result := TsCellExprNode.Create(self, sheet, CurrentToken, true) end else if TokenType = ttCellRange then begin diff --git a/components/fpspreadsheet/source/common/xlsxooxml.pas b/components/fpspreadsheet/source/common/xlsxooxml.pas index bb0cbdd22..9912bdb2c 100644 --- a/components/fpspreadsheet/source/common/xlsxooxml.pas +++ b/components/fpspreadsheet/source/common/xlsxooxml.pas @@ -731,7 +731,8 @@ begin end else // "Normal" formula - AWorksheet.WriteFormula(cell, formulaStr); + cell^.FormulaValue := formulaStr; +// AWorksheet.WriteFormula(cell, formulaStr); except on E:EExprParser do begin FWorkbook.AddErrorMsg(E.Message);