测试代码:

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进程无法退出相关推荐

  1. Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开

    使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...

  2. 右键excel 文件后文件夹卡死,或打开Excel后文件所在的文件夹卡死

    右键excel 文件后文件夹卡死,或打开Excel后文件所在的文件夹卡死! 关闭资源管理器中的详细信息窗格,解决问题! 1.右键卡主效果:  2.解决方法打开资源管理器: 3.关闭资源管理器中的详细信 ...

  3. Excel 保存文件出现 您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任中心的文件阻止设置阻止

    环境: 戴尔3490笔记本 Excel 2016 Excel 2021 问题描述: Excel 保存xlsm文件出现,您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任 ...

  4. 双击打开Excel2016文件后无法直接显示文件内容的解决办法

    双击打开Excel2016文件后无法直接显示文件内容的解决办法 1.打开Excel2016文件,选择 文件–>选项–>高级–>常规,不勾选"忽略使用动态数据交换(DDE)的 ...

  5. freemaker导出excel文件使用Excel打不开

    freemaker导出excel文件使用Excel打不开 最近在做导出的功能过程中,发现导出的excel只能用wps打开,用office打开就报文件损坏 网上搜了一些文章,找到了解决方案 只要把ss: ...

  6. “Project1.exe”(Win32): 已加载“C:\Windows\syswow64\ntdll.dll”。无法查找或打开 PDB 文件。 “Project1.exe”(Win32): 已加载

    "Project1.exe"(Win32): 已加载"C:\Windows\syswow64\ntdll.dll".无法查找或打开 PDB 文件. " ...

  7. 解决MATLAB2018b打开m文件后注释乱码的问题

    解决MATLAB2018b打开m文件后注释乱码的问题 MATLAB高版本(2017a以上)存在的两种编码格式 编码格式修改(GBK改为UTF-8) MATLAB高版本(2017a以上)存在的两种编码格 ...

  8. Windows 7 打开PDF文件后提示 Adobe Reader 已停止工作问题

    Windows 7  打开PDF文件后提示Adobe Reader XI (Adobe Reader 11.0.0) 已停止工作问题分享一下 打开PDF一会后提示以下信息 试过卸载,重安装,反复搞了几 ...

  9. 解决EasyPoi导出Excel文件后提示无法打开文件的问题

    本来项目中导出Excel文件借助EasyPoi用得好好的,今天测试时发现对要导出的数据做了筛选后,导出的Excel文件打开就会弹出"无法打开文件"的提示,如图所示: 经过网上寻找答 ...

  10. 关于使用SXSSFWorkbook对象下载excel文件,打开文件后excel文件损坏

    使用final SXSSFWorkbook workbook = new SXSSFWorkbook( )创建对象后,在你自己的代码逻辑中 不能直接返回workbook对象 必须要创建sheet:例如 ...

最新文章

  1. Python2.7 安装numpy报错解决方法
  2. 收藏:存储知识全面总结
  3. 完全用链表实现的贪吃蛇
  4. 【推荐系统】推荐系统整体框架概览
  5. 随机排列_“按字母顺序排列”其实是种随机顺序
  6. 使用Spring配合Junit进行单元测试的总结
  7. 外贸网站建设(转自xmfish)
  8. 关于Andrdoid编程中出现BufferQueue的“queueBuffer: fence is NULL”的一种解决方案
  9. SQL_TRACE与tkprof分析
  10. 生产车间仿真软件flexSIM
  11. Linux上如何安装微信! 或登录网页版微信提示:为了你的帐号安全,此微信号不能登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。
  12. 文兵生日--2010-12-1
  13. LINUX编译xcb/xcb-proto
  14. 零基础学Python需要用到哪些软件?
  15. 如何使用typora来写博客?
  16. java解析Excel里面的数据
  17. 【Vivado那些事】Xilinx的7系列的SRCC和MRCC
  18. 磁通量,磁通,磁感应强度,磁场强度,磁导率
  19. 7.3 嵌入式实训学习的第一天
  20. java方向的光脚丫子的电影,斯嘉丽·约翰逊:“光着脚丫子”示人,这足踝,这足弓,爱了好吗...

热门文章

  1. 可视化界面设计工具-物联网实训教学辅助工具-物联网实训室
  2. 计算机组成原理-第二章 运算方法和运算器
  3. 新技术共筑数据安全 新基建重塑数智未来 ——众享比特2020战略发布会圆满举办
  4. 光环新网股东红杉资本拟减持不超1.25%股份
  5. VUE+bpmn.js+iview 页面绘制流程图
  6. 受邀参加:2010中国中小企业信息化与成长力推进高峰论坛
  7. 【已解决】未解决-mimikatz尝试获取win10明文口令报错
  8. 【数字化】PLM视角下,数字化工厂的构建之道!
  9. MAC OS下配置wget
  10. 【产品经理交互常用软件】axure软件详细教程与学习指南