码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-01-20 15:55:28      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:c++

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)


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

标签:c++

原文地址:http://feather.blog.51cto.com/4767437/1736727

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!