示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#3
0
        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();
        }
示例#4
0
        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();
        }
示例#5
0
        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;
        }
示例#6
0
        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;
        }
示例#7
0
        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;
        }
示例#9
0
        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;
        }
示例#10
0
        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;
        }