VC 打开 Excel 文件后,excel.exe进程无法退出
测试代码:
vc6.0
office2000
以下代码需要MFC的支持,而且工程中还要包含EXCEL2000的定义文件:EXCEL9.H,EXCEL9.CPP
_Application ExcelApp; Workbooks wbsMyBooks; _Workbook wbMyBook; Worksheets wssMysheets; _Worksheet wsMysheet; Range range; LPDISPATCH lpDisp; //创建Excel 2000服务器(启动Excel) COleVariant vResult;COleVariant covTrue((short)TRUE);COleVariant covFalse((short)FALSE);COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);CoInitialize(NULL);if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("创建Excel服务失败!"); exit(1); }
ExcelApp.SetVisible(TRUE); //使Excel可见
ExcelApp.SetUserControl(TRUE); //允许其它用户控制Excel//打开c:\\aaa.xlswbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks());lpDisp = wbsMyBooks.Open("C:\\aaa.xls", covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional ); //得到WorkbookwbMyBook.AttachDispatch(lpDisp);//得到WorksheetswssMysheets.AttachDispatch(wbMyBook.GetWorksheets()); //得到当前活跃sheet//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待lpDisp=wbMyBook.GetActiveSheet();wsMysheet.AttachDispatch(lpDisp);//*****//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列Range usedRange;usedRange.AttachDispatch(wsMysheet.GetUsedRange());range.AttachDispatch(usedRange.GetRows());long iRowNum=range.GetCount(); //已经使用的行数range.AttachDispatch(usedRange.GetColumns());long iColNum=range.GetCount(); //已经使用的列数long iStartRow=usedRange.GetRow(); //已使用区域的起始行,从1开始long iStartCol=usedRange.GetColumn(); //已使用区域的起始列,从1开始for (long i=iStartRow; i<iRowNum+1; i++){for (long j=iStartCol; j<iColNum+1; j++){range.AttachDispatch(wsMysheet.GetCells());range.AttachDispatch(range.GetItem (COleVariant((long)i),COleVariant((long)j)).pdispVal );vResult =range.GetValue();CString str;if(vResult.vt == VT_BSTR) //字符串{str=vResult.bstrVal;}else if (vResult.vt==VT_R8) //8字节的数字{str.Format("%f",vResult.dblVal);}else if(vResult.vt==VT_DATE) //时间格式{SYSTEMTIME st;VariantTimeToSystemTime(vResult.date, &st);}else if(vResult.vt==VT_EMPTY) //单元格空的{str="";}if (str.Find("44") != -1){AfxMessageBox(str);}}}/*****//读取第一个单元格的值range.AttachDispatch(wsMysheet.GetCells());range.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)1)).pdispVal );vResult =range.GetValue();CString str;if(vResult.vt == VT_BSTR) //字符串{str=vResult.bstrVal;}else if (vResult.vt==VT_R8) //8字节的数字{str.Format("%f",vResult.dblVal);}else if(vResult.vt==VT_DATE) //时间格式{SYSTEMTIME st;VariantTimeToSystemTime(vResult.date, &st);}else if(vResult.vt==VT_EMPTY) //单元格空的{str="";} AfxMessageBox(str);*//*wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("c:\\aaa.xls")));//MessageBox("gg1");//得到Worksheets wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); //得到sheet1 wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("bend")),true); //得到全部Cells,此时,rgMyRge是cells的集合 range.AttachDispatch(wsMysheet.GetCells(),true); _variant_t vStr;BSTR bStr;vStr=range.GetItem(_variant_t((long)3),_variant_t((long)3));bStr = (_bstr_t)vStr;//CString outstr=(LPCTSTR)(LPSTR)bStr;CString out2="";for(int i=0;i<sizeof(bStr);i++){out2+=(CString)(char)*(bStr+i);}AfxMessageBox(out2);*///关闭execlExcelApp.SetUserControl(FALSE);wbMyBook.Close (covOptional,covOptional,covOptional);wbsMyBooks.Close();ExcelApp.Quit();//释放对象range.ReleaseDispatch();wsMysheet.ReleaseDispatch();wssMysheets.ReleaseDispatch();wbMyBook.ReleaseDispatch();wbsMyBooks.ReleaseDispatch();ExcelApp.ReleaseDispatch(); }
Quit之前
SetUserControl(FALSE);
VC 打开 Excel 文件后,excel.exe进程无法退出相关推荐
- Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开
使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...
- 右键excel 文件后文件夹卡死,或打开Excel后文件所在的文件夹卡死
右键excel 文件后文件夹卡死,或打开Excel后文件所在的文件夹卡死! 关闭资源管理器中的详细信息窗格,解决问题! 1.右键卡主效果: 2.解决方法打开资源管理器: 3.关闭资源管理器中的详细信 ...
- Excel 保存文件出现 您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任中心的文件阻止设置阻止
环境: 戴尔3490笔记本 Excel 2016 Excel 2021 问题描述: Excel 保存xlsm文件出现,您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任 ...
- 双击打开Excel2016文件后无法直接显示文件内容的解决办法
双击打开Excel2016文件后无法直接显示文件内容的解决办法 1.打开Excel2016文件,选择 文件–>选项–>高级–>常规,不勾选"忽略使用动态数据交换(DDE)的 ...
- freemaker导出excel文件使用Excel打不开
freemaker导出excel文件使用Excel打不开 最近在做导出的功能过程中,发现导出的excel只能用wps打开,用office打开就报文件损坏 网上搜了一些文章,找到了解决方案 只要把ss: ...
- “Project1.exe”(Win32): 已加载“C:\Windows\syswow64\ntdll.dll”。无法查找或打开 PDB 文件。 “Project1.exe”(Win32): 已加载
"Project1.exe"(Win32): 已加载"C:\Windows\syswow64\ntdll.dll".无法查找或打开 PDB 文件. " ...
- 解决MATLAB2018b打开m文件后注释乱码的问题
解决MATLAB2018b打开m文件后注释乱码的问题 MATLAB高版本(2017a以上)存在的两种编码格式 编码格式修改(GBK改为UTF-8) MATLAB高版本(2017a以上)存在的两种编码格 ...
- Windows 7 打开PDF文件后提示 Adobe Reader 已停止工作问题
Windows 7 打开PDF文件后提示Adobe Reader XI (Adobe Reader 11.0.0) 已停止工作问题分享一下 打开PDF一会后提示以下信息 试过卸载,重安装,反复搞了几 ...
- 解决EasyPoi导出Excel文件后提示无法打开文件的问题
本来项目中导出Excel文件借助EasyPoi用得好好的,今天测试时发现对要导出的数据做了筛选后,导出的Excel文件打开就会弹出"无法打开文件"的提示,如图所示: 经过网上寻找答 ...
- 关于使用SXSSFWorkbook对象下载excel文件,打开文件后excel文件损坏
使用final SXSSFWorkbook workbook = new SXSSFWorkbook( )创建对象后,在你自己的代码逻辑中 不能直接返回workbook对象 必须要创建sheet:例如 ...
最新文章
- Python2.7 安装numpy报错解决方法
- 收藏:存储知识全面总结
- 完全用链表实现的贪吃蛇
- 【推荐系统】推荐系统整体框架概览
- 随机排列_“按字母顺序排列”其实是种随机顺序
- 使用Spring配合Junit进行单元测试的总结
- 外贸网站建设(转自xmfish)
- 关于Andrdoid编程中出现BufferQueue的“queueBuffer: fence is NULL”的一种解决方案
- SQL_TRACE与tkprof分析
- 生产车间仿真软件flexSIM
- Linux上如何安装微信! 或登录网页版微信提示:为了你的帐号安全,此微信号不能登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。
- 文兵生日--2010-12-1
- LINUX编译xcb/xcb-proto
- 零基础学Python需要用到哪些软件?
- 如何使用typora来写博客?
- java解析Excel里面的数据
- 【Vivado那些事】Xilinx的7系列的SRCC和MRCC
- 磁通量,磁通,磁感应强度,磁场强度,磁导率
- 7.3 嵌入式实训学习的第一天
- java方向的光脚丫子的电影,斯嘉丽·约翰逊:“光着脚丫子”示人,这足踝,这足弓,爱了好吗...