MFC中使用App.Quit();無法退出Excel表格的解決方法

1 現象描述

		if (!appExcel.CreateDispatch("Excel.Application")) {
			return FALSE;
		}

		wbsBooks.AttachDispatch(appExcel.get_Workbooks());
		lpDisp = wbsBooks.Open(m_csXlsPath,covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption, covOption);
		wbBook.AttachDispatch(lpDisp);
		lpDisp = wbBook.get_ActiveSheet();
		wsSheet.AttachDispatch(lpDisp);
		rangeBasicCells.AttachDispatch(wsSheet.get_Cells());


		rangeUsedCells.AttachDispatch(wsSheet.get_UsedRange());
		rangeTempCells.AttachDispatch(rangeUsedCells.get_Columns());
		lMaxColNum = rangeTempCells.get_Count();
		rangeTempCells.AttachDispatch(rangeUsedCells.get_Rows());
		lMaxRowNum = rangeTempCells.get_Count();
		lStartCol = rangeUsedCells.get_Column();
		lStartRow = rangeUsedCells.get_Row();
		rangeUsedCells.ReleaseDispatch();
		rangeTempCells.ReleaseDispatch();

		GetInfoFromExc(rangeBasicCells, lMaxRowNum);
		
		rangeBasicCells.ReleaseDispatch();
		wsSheet.ReleaseDispatch();
		wbBook.ReleaseDispatch();
		wbsBooks.Close();
		wbsBooks.ReleaseDispatch();//*****標記1******
		appExcel.Quit();
		appExcel.ReleaseDispatch();


以上代碼中,最初,註釋爲“//*****標記1******”這行代碼並不存在,執行代碼後Excel進程並不會從後臺結束。當加上這行代碼後Excel進程纔會從後臺結束。原因是,wbsBooks沒有釋放,appExcel不能退出。


2 該類問題解決方法

1)查看與Execl相關的變量是否全部都ReleaseDispatch了。

2)查看與Execl相關的變量在關閉和釋放的時候順序是否正確。比如,要先使用Close(),後使用ReleaseDispatch。


該解決方法總結於[vc excel Quit 無法關閉excel進程,急啊!!!!!](http://bbs.csdn.net/topics/390039312?page=1#post-395362721)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章