关于VC操作Excel无法退出进程的问题

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

时间: 2024-07-30 20:25:25

关于VC操作Excel无法退出进程的问题的相关文章

VC操作Excel之基本操作

// 变量的定义 _Application app; Workbooks books; _Workbook book; Worksheets sheets; _Worksheet sheet; Range range; LPDISPATCH lpDisp;    COleVariant vResult; CString str = "";  COleVariant  covTrue((short)TRUE),  covFalse((short)FALSE),  covOptional(

VC操作excel

http://www.cnblogs.com/witxjp/archive/2010/06/05/1752181.html 最近在做个数据库程序,因为有些数据用户要求导出到Excel文件显示(需要报给其他单位).所以查阅了一下相关的VC的Excel编程操作,总结一下吧:(所有资料来源于网络) 利用VC操作Excel的方法至少有两种 1 .利用ODBC把Excel文件当成数据库文件,来进行读.写.修改等操作,网上有人编写了CSpreadSheet类,提供支持. 2. 利用Automation(OL

VC++操作Excel

摘要:使用Microsoft Office所带的控件来实现代码操作excel表格. 开发环境:操作系统是Microsoft Windows7 32bit,Office办公套装是Microsoft Office 2003,编程环境是Microsoft Visual Studio 6.0. 使用背景:我最近有个项目中要生成报表,是将数据库中的发证数据查询出来导出到Excel表格中以便打印,所以上网找了这方面的内容,具体内容如下,如错误还请指证. 从平常我们操作一般文件上来看,无非是打开文件,操作文件

VC通过OLE/COM对象操作EXCEL

vc通过excel的COM接口来操作EXCEL时,功能比较强大,可以对EXCEL进行表格的几乎所有操作,在操作时如果利用SAFEARRAY数组,性能也会大幅度提升. 但是有一个问题,在操作完EXCEL后,资源释放以后,EXCEL进程怎么也关不掉!!!我尝试了很多种办法,都无效,最后无意间发现导致EXCEL进程不能关闭的原因是,EXCEL中加载了第三方的COM组件(我的是金山杀毒的EXCEL加载项引起的),查找EXCEL加载项的方法是(excel2010版本): 点击[文件]---[选项]---[

[00028]-[2015-09-23]-[00]-[VC 关于Excel操作的测试]

BOOL CTest_App::InitInstance() { ....... // 初始化Con支持库 if(ConInitialize(NULL) != 0) { AfxMessageBox("初始化COn支持库失败!"); exit(1); } ......... } class CTest_Dlg { // 定义相关全局变量 _Application app; Workbooks books; _Workbook book; Worksheets sheets; _Works

VC——使用DLL的方式操作excel

写工具软件,一直和excel打交道,之前一直采用excel.cpp.excel.h直接添加到工程的方式来读写excel,现在由于要对代码进行单元测试,excel.cpp和excel.h文件中竟然有上万行代码,会引起很大的测试量,因此打算采用dll调用的方式来读写excel. 1. 首先从本机安装的office软件中导出DLL文件. 在程序的的stdafx.h中增加以下内容.文件路径修改为本机安装office的路径 #import "C:\\Program Files (x86)\\Common

.Net常用技巧_操作Excel知识点

C#操作Excel知识点 近期在使用C#操作excel,主要是读取excel模板,复制其中的模板sheet页,生成多个sheet页填充相应数据后另存到excel文件,所用到的知识点如下. 一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引用,它的默认路径是C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Off

Microsoft.Office.Interop.Excel 操作 Excel

Microsoft.Office.Interop.Excel类库用于操作Excel,提供了丰富的类和函数,功能非常强大. 第一部分:类库简介 引用命名空间 using Excel = Microsoft.Office.Interop.Excel; 1,在使用类库之前,先总结以下几个类的用法 Application:Excel应用程序类,是Excel的引擎,new 一个实例. Excel.Application excelApp = new Excel.Application(); Workboo

C#操作Excel文件(转)

摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格. Excel以其功能强大,界面友好等受到了许多用户的欢迎.在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功 能适用于每一个用户,可以想象程序设计是十分复杂的.由于Excel表格的功能强大,又由于几乎每一台机器都安装了