From e147e489613a4cb979941297088b06b36fe15066 Mon Sep 17 00:00:00 2001 From: KarlKallman Date: Wed, 9 Sep 2026 13:07:32 +0200 Subject: [PATCH 1/2] Fixed bug surrounding FullPrecision being lost when saving in EPPlus --- src/EPPlus/ExcelWorkbook.cs | 2 +- .../Issues/FormulaCalculationIssues.cs | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/EPPlus/ExcelWorkbook.cs b/src/EPPlus/ExcelWorkbook.cs index 72f01dbc1..b645d138b 100644 --- a/src/EPPlus/ExcelWorkbook.cs +++ b/src/EPPlus/ExcelWorkbook.cs @@ -1556,7 +1556,7 @@ internal void Save() // Workbook Save DeleteCalcChain(); - SetXmlNodeBool("d:calcPr/@fullPrecision", FullPrecision, false); + SetXmlNodeBool("d:calcPr/@fullPrecision", FullPrecision, true); // SÄTT TILLBAKA TILL FALSE. if(_workbookCreatedInEPPlus == false) EnsureCalculationFeatures(); //Ensure that the calculation features are included in the file to make sure that new functions are supported. diff --git a/src/EPPlusTest/Issues/FormulaCalculationIssues.cs b/src/EPPlusTest/Issues/FormulaCalculationIssues.cs index 7ee481dbd..9a4cab2d1 100644 --- a/src/EPPlusTest/Issues/FormulaCalculationIssues.cs +++ b/src/EPPlusTest/Issues/FormulaCalculationIssues.cs @@ -1807,6 +1807,42 @@ public void i2490_CalcNameAsFirstOperandOfRangeComparison() Assert.AreEqual(20D, ws.Cells["F1"].Value); } } + + [TestMethod] + public void i1069() + { + using(var package = OpenTemplatePackage("PrecisionTest.xlsx")) + { + var setPrecision = package.Workbook.FullPrecision; + Assert.AreEqual(setPrecision, false); + + SaveWorkbook("precisionTextResult.xlsx", package); + Assert.AreEqual(false, package.Workbook.FullPrecision); + } + } + + [TestMethod] + public void i1069_roundtrip() + { + var file = "fp.xlsx"; + + using (var p = OpenPackage(file, true)) + { + p.Workbook.Worksheets.Add("Sheet1"); + p.Workbook.FullPrecision = false; + p.Save(); + } + using (var p = OpenPackage(file)) + Assert.IsFalse(p.Workbook.FullPrecision); + + using (var p = OpenPackage(file)) + { + p.Workbook.FullPrecision = true; + p.Save(); + } + using (var p = OpenPackage(file)) + Assert.IsTrue(p.Workbook.FullPrecision); + } } } From e64e469bf327ad4869be2ee5977627dd1d6c4bb1 Mon Sep 17 00:00:00 2001 From: KarlKallman Date: Wed, 9 Sep 2026 13:11:21 +0200 Subject: [PATCH 2/2] Cleanup --- src/EPPlus/ExcelWorkbook.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EPPlus/ExcelWorkbook.cs b/src/EPPlus/ExcelWorkbook.cs index b645d138b..3ecea3896 100644 --- a/src/EPPlus/ExcelWorkbook.cs +++ b/src/EPPlus/ExcelWorkbook.cs @@ -1556,7 +1556,7 @@ internal void Save() // Workbook Save DeleteCalcChain(); - SetXmlNodeBool("d:calcPr/@fullPrecision", FullPrecision, true); // SÄTT TILLBAKA TILL FALSE. + SetXmlNodeBool("d:calcPr/@fullPrecision", FullPrecision, true); if(_workbookCreatedInEPPlus == false) EnsureCalculationFeatures(); //Ensure that the calculation features are included in the file to make sure that new functions are supported.