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]