diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs index 3325338..d935dac 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -49,10 +49,12 @@ } #endregion - + private Boolean _subscribedToShiftedRows; protected void SubscribeToShiftedRows(RangeShiftedRowsDelegate worksheetRangeShiftedRows) { + if (!Worksheet.EventTrackingEnabled) return; + WorksheetRangeShiftedRows = worksheetRangeShiftedRows; RangeAddress.Worksheet.RangeShiftedRows += WorksheetRangeShiftedRows; _subscribedToShiftedRows = true; @@ -61,6 +63,8 @@ private Boolean _subscribedToShiftedColumns; protected void SubscribeToShiftedColumns(RangeShiftedColumnsDelegate worksheetRangeShiftedColumns) { + if (!Worksheet.EventTrackingEnabled) return; + WorksheetRangeShiftedColumns = worksheetRangeShiftedColumns; RangeAddress.Worksheet.RangeShiftedColumns += WorksheetRangeShiftedColumns; _subscribedToShiftedColumns = true; diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs index af8f3bf..fb8ba56 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs @@ -6,6 +6,7 @@ { using System.Linq; + public enum XLEventTracking { Enabled, Disabled } public enum XLCalculateMode { Auto, @@ -168,6 +169,11 @@ private readonly Dictionary _stylesById = new Dictionary(); private readonly Dictionary _stylesByStyle = new Dictionary(); + + private readonly XLEventTracking _eventTracking; + + public XLEventTracking EventTracking { get { return _eventTracking; } } + internal Int32 GetStyleId(IXLStyle style) { @@ -513,8 +519,9 @@ /// /// Creates a new Excel workbook. /// - public XLWorkbook() + public XLWorkbook(XLEventTracking eventTracking = XLEventTracking.Enabled) { + _eventTracking = eventTracking; DefaultRowHeight = 15; DefaultColumnWidth = 8.43; Style = new XLStyle(null, DefaultStyle); @@ -538,13 +545,14 @@ NamedRanges = new XLNamedRanges(this); CustomProperties = new XLCustomProperties(this); ShapeIdManager = new XLIdManager(); + } /// /// Opens an existing workbook from a file. /// /// The file to open. - public XLWorkbook(String file) + public XLWorkbook(String file, XLEventTracking eventTracking = XLEventTracking.Enabled) : this() { _loadSource = XLLoadSource.File; @@ -556,7 +564,7 @@ /// Opens an existing workbook from a stream. /// /// The stream to open. - public XLWorkbook(Stream stream) + public XLWorkbook(Stream stream, XLEventTracking eventTracking = XLEventTracking.Enabled) : this() { _loadSource = XLLoadSource.Stream; diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index f77c0cd..62a3033 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -31,7 +31,7 @@ private Double _rowHeight; private Boolean _tabActive; - + internal readonly Boolean EventTrackingEnabled; #endregion #region Constructor @@ -42,6 +42,7 @@ new XLAddress(null, ExcelHelper.MinRowNumber, ExcelHelper.MinColumnNumber, false, false), new XLAddress(null, ExcelHelper.MaxRowNumber, ExcelHelper.MaxColumnNumber, false, false))) { + EventTrackingEnabled = workbook.EventTracking == XLEventTracking.Enabled; RangeAddress.Worksheet = this; RangeAddress.FirstAddress.Worksheet = this; RangeAddress.LastAddress.Worksheet = this;