diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index 4ca7822..beb1d6d 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -777,6 +777,9 @@ xlCell.FormulaA1 = formula; } + if (cell.CellFormula.Reference != null) + xlCell.FormulaReference = ws.Range(cell.CellFormula.Reference.Value).RangeAddress; + if (cell.CellValue != null) xlCell.ValueCached = cell.CellValue.Text; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs index d4de99e..b69413a 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs @@ -841,7 +841,7 @@ var cellsWithoutFormulas = new HashSet(); foreach (var c in worksheet.Internals.CellsCollection.GetCells()) { - if (XLHelper.IsNullOrWhiteSpace(c.FormulaA1) || (c.FormulaReference == null && c.FormulaA1.StartsWith("{"))) + if (XLHelper.IsNullOrWhiteSpace(c.FormulaA1)) cellsWithoutFormulas.Add(c.Address.ToStringRelative()); else { @@ -4073,13 +4073,13 @@ cell.StyleIndex = styleId; var formula = opCell.FormulaA1; - if (opCell.HasFormula && !(formula.StartsWith("{") && opCell.FormulaReference == null)) + if (opCell.HasFormula) { if (formula.StartsWith("{")) { formula = formula.Substring(1, formula.Length - 2); var f = new CellFormula {FormulaType = CellFormulaValues.Array}; - + if (opCell.FormulaReference.FirstAddress.Equals(opCell.Address)) { f.Text = formula;