private void Dispose(bool disposing)
	    {
	        // Check to see if Dispose has already been called.
	        if (!disposed)
	        {
	            if (disposing)
	            {
	                if (_zipWorker != null) _zipWorker.Dispose();
	                if (_xmlReader != null) _xmlReader.Close();
	                if (_sheetStream != null) _sheetStream.Close();
	            }

	            _zipWorker = null;
	            _xmlReader = null;
	            _sheetStream = null;

	            _workbook = null;
	            _cellsValues = null;
	            _savedCellsValues = null;

	            disposed = true;
	        }
	    }
	    public void Initialize(Stream fileStream)
	    {
	        _zipWorker = new ZipWorker();
	        _zipWorker.Extract(fileStream);

	        if (!_zipWorker.IsValid)
	        {
	            _isValid = false;
	            _exceptionMessage = _zipWorker.ExceptionMessage;

	            Close();

	            return;
	        }

	        ReadGlobals();
	    }