internal Worksheet( ExcelApplication excel, Workbook workbook, Excel.Worksheet _worksheet, ObjectDisposedCallback disposeCallback, bool displayGridLines) { this.ExcelApplication = excel; this.Workbook = workbook; this._worksheet = _worksheet; this._cells = _worksheet.Cells; this.disposeCallback = disposeCallback; this.Name = _worksheet.Name; DisplayGridlines = displayGridLines; }
internal Workbook( ExcelApplication excelApplication, Excel.Workbook _workbook, string filePath, ObjectDisposedCallback disposeCallback) { ExcelApplication = excelApplication; this._workbook = _workbook; this.FilePath = filePath; worksheets = new List<Worksheet>(); _sheets = _workbook.Worksheets; worksheetDisposeCallback = sender => worksheets.Remove((Worksheet)sender); this.disposeCallback = disposeCallback; for (var i = 1; i <= _sheets.Count; i++) { worksheets.Add(new Worksheet(ExcelApplication, this, _sheets[i], worksheetDisposeCallback, false)); } worksheets[0].Activate(); }
internal Workbook( ExcelApplication excelApplication, Excel.Workbook _workbook, string filePath, ObjectDisposedCallback disposeCallback) { ExcelApplication = excelApplication; this._workbook = _workbook; this.FilePath = filePath; worksheets = new List <Worksheet>(); _sheets = _workbook.Worksheets; worksheetDisposeCallback = sender => worksheets.Remove((Worksheet)sender); this.disposeCallback = disposeCallback; for (var i = 1; i <= _sheets.Count; i++) { worksheets.Add(new Worksheet(ExcelApplication, this, _sheets[i], worksheetDisposeCallback, false)); } worksheets[0].Activate(); }
public void Start(bool visible, bool displayAlerts, bool ignoreRemoteRequests) { AssertNotDisposed(); if (started) { return; } try { _excel = new Excel.Application(); } catch (Exception e) { throw new Exception("Failed to start Excel.", e); } var hWnd = (IntPtr)_excel.Hwnd; uint processId; ProcessFunctions.GetWindowThreadProcessId(hWnd, out processId); excelProcess = Process.GetProcessById((int)processId); excelProcess.EnableRaisingEvents = true; excelProcess.Exited += (s, e) => { if (!disposed) { Dispose(true); OnExit(ExitCause.Unknown); } }; _excel.Visible = true; _excel.DisplayAlerts = displayAlerts; _excel.IgnoreRemoteRequests = ignoreRemoteRequests; _workbooks = _excel.Workbooks; workbooks = new List <IWorkbook>(); disposeCallback = sender => workbooks.Remove((Workbook)sender); started = true; }
protected virtual void Dispose(bool disposing, bool saveChanges) { if (disposed) { return; } if (disposing) { var count = worksheets.Count; for (int i = 0; i < count; i++) { worksheets[0].Dispose(); } worksheets = null; if (disposeCallback != null) { disposeCallback(this); disposeCallback = null; } } try { _workbook.Close(saveChanges); } catch { } Marshal.ReleaseComObject(_sheets); _sheets = null; Marshal.ReleaseComObject(_workbook); _workbook = null; disposed = true; }
protected virtual void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { if (disposeCallback != null) { disposeCallback(this); disposeCallback = null; } } Marshal.ReleaseComObject(_cells); _cells = null; Marshal.ReleaseComObject(_worksheet); _worksheet = null; disposed = true; }
public void Start(bool visible, bool displayAlerts, bool ignoreRemoteRequests) { AssertNotDisposed(); if (started) { return; } try { _excel = new Excel.Application(); } catch (Exception e) { throw new Exception("Failed to start Excel.", e); } var hWnd = (IntPtr)_excel.Hwnd; uint processId; ProcessFunctions.GetWindowThreadProcessId(hWnd, out processId); excelProcess = Process.GetProcessById((int)processId); excelProcess.EnableRaisingEvents = true; excelProcess.Exited += (s, e) => { if (!disposed) { Dispose(true); OnExit(ExitCause.Unknown); } }; _excel.Visible = true; _excel.DisplayAlerts = displayAlerts; _excel.IgnoreRemoteRequests = ignoreRemoteRequests; _workbooks = _excel.Workbooks; workbooks = new List<IWorkbook>(); disposeCallback = sender => workbooks.Remove((Workbook)sender); started = true; }