网上查了很久都没有个结果,有相同问题倒是不少,都是没有解决的,有的是用结束进程方式解决的。虽然我也没有彻底解决,但是可能可以帮到碰到相同问题的朋友,在线程内的操作excel都没有问题,线程执行完成进程也就退出了,当然在线程内得加上::CoInitialize(NULL),::CoUninitialize()来初始化线程COM库,如果不是线程的话怎么办呢?比如按钮事件内,碰到的问题就是在这种情况下点击一次excel进程就会多一个,事件执行结束进程也不会退出。我采取的办法是在WM_CLOSE消息的地方添加个::CoUninitialize(),这样虽然表面看上去也是执行一次就多一个进程,但是在退出的时候会把所有excel的进程都退出,有人说这个还用你说啊!且听我说下去,我使用了DoModal(),在这个界面内添加了按钮事件内有保存excel,在没有添加::CoUninitialize()的情况下关闭DoModal(),Excel的进程也不会退出,要把整个程序退出后excel才会退出,在DoModal()关闭的地方添加::CoUninitialize()后,关闭DoModal()就会退出在DoModal()创建的excel进程,不管几个都会退出。如果想要执行完代码就退出excel那么还是建议使用线程来完成!如果有更好的办法来不用使用线程就可以退出excel的话希望告诉我!