diff --git a/ClosedXML/Excel/Tables/XLTableField.cs b/ClosedXML/Excel/Tables/XLTableField.cs index 4ddcd73..03b47e9 100644 --- a/ClosedXML/Excel/Tables/XLTableField.cs +++ b/ClosedXML/Excel/Tables/XLTableField.cs @@ -27,7 +27,8 @@ { if (_column == null) { - _column = this.table.AsRange().Column(this.Index + 1); + using (var range = this.table.AsRange()) + _column = range.Column(this.Index + 1); } return _column; } diff --git a/ClosedXML/Excel/XLWorkbook.cs b/ClosedXML/Excel/XLWorkbook.cs index 26d518f..3a22085 100644 --- a/ClosedXML/Excel/XLWorkbook.cs +++ b/ClosedXML/Excel/XLWorkbook.cs @@ -1004,5 +1004,21 @@ throw new NotImplementedException(); } } + + public void SuspendEvents() + { + foreach (var ws in WorksheetsInternal) + { + ws.SuspendEvents(); + } + } + + public void ResumeEvents() + { + foreach (var ws in WorksheetsInternal) + { + ws.ResumeEvents(); + } + } } } diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index e897701..d3e1134 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -212,6 +212,8 @@ // Adds child parts and generates content of the specified part. private void CreateParts(SpreadsheetDocument document, SaveOptions options) { + this.SuspendEvents(); + var context = new SaveContext(); var workbookPart = document.WorkbookPart ?? document.AddWorkbookPart(); @@ -343,6 +345,8 @@ // Clear list of deleted worksheets to prevent errors on multiple saves worksheets.Deleted.Clear(); + + this.ResumeEvents(); } private void DeleteComments(WorksheetPart worksheetPart, XLWorksheet worksheet, SaveContext context)