From 19ea96a3ac977b56c4d3d24333eb201d7a9ba155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4llman?= Date: Tue, 19 May 2026 08:08:13 +0200 Subject: [PATCH] Fix for issue #2349 --- src/EPPlus/ExcelPackageAsync.cs | 4 +- .../Longrunning Tests/LongRunningTests.cs | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/EPPlus/ExcelPackageAsync.cs b/src/EPPlus/ExcelPackageAsync.cs index 85264e5c87..16975717e6 100644 --- a/src/EPPlus/ExcelPackageAsync.cs +++ b/src/EPPlus/ExcelPackageAsync.cs @@ -175,8 +175,8 @@ private async Task LoadAsync(Stream input, Stream output, string Password, Cance } finally { - ms.Dispose(); - } + //ms.Dispose(); //Don't dispose the stream as it is used as the base for the ZipPackage when having 2GB streams or larger. It will be disposed when the package is disposed or saved. + } } //Clear the workbook so that it gets reinitialized next time this._workbook = null; diff --git a/src/EPPlusTest/Longrunning Tests/LongRunningTests.cs b/src/EPPlusTest/Longrunning Tests/LongRunningTests.cs index 62996b8d17..785081dc4d 100644 --- a/src/EPPlusTest/Longrunning Tests/LongRunningTests.cs +++ b/src/EPPlusTest/Longrunning Tests/LongRunningTests.cs @@ -159,6 +159,47 @@ public void PerformanceIssueGetAsByteArray() SaveWorkbook("PivotTest_calculated_columns.xlsx", p); } } + [TestMethod] + public void PerformanceIssueLoadAndSave() + { + using (var p = OpenTemplatePackage("LargeWorkbookTemplate.xlsx")) + { + /* Raw Data Sheet only */ + ExcelWorksheet ws = p.Workbook.Worksheets[0]; // second sheet + + p.Workbook.Calculate(); + SaveWorkbook("LargeWBSave.xlsx", p); + } + } + [TestMethod] + public void PerformanceIssueLoadAndSaveSync() + { + using (var p = new ExcelPackage()) + { + var file = GetTemplateFile("LargeWorkbookTemplate.xlsx"); + p.Load(new FileStream(file.FullName, FileMode.Open)); + /* Raw Data Sheet only */ + ExcelWorksheet ws = p.Workbook.Worksheets[0]; // second sheet + + p.Workbook.Calculate(); + } + } + + + [TestMethod] + public async Task PerformanceIssueLoadAndSaveAsync() + { + using (var p = new ExcelPackage()) + { + var file = GetTemplateFile("LargeWorkbookTemplate.xlsx"); + await p.LoadAsync(file); + /* Raw Data Sheet only */ + ExcelWorksheet ws = p.Workbook.Worksheets[0]; // second sheet + + p.Workbook.Calculate(); + } + } + #endregion #region HtmlExport [TestMethod]