踏破铁鞋无觅处,得来费死了工夫。

本文章的引用来源,本人综合而成。

http://blog.csdn.net/chasemylov/archive/2010/08/27/5844826.aspx

http://blog.csdn.net/SP_daiyq/archive/2011/02/17/6191233.aspx

使用软件 VS2008 excel版本 2003  *.xls

亲测可用

转载请注明来自:http://blog.csdn.net/icyfox_bupt/archive/2011/04/12/6318979.aspx

变动:

  之所以找的困难,很大一部分是因为代码不能转移。现在说一下主要的变动,应该是版本的问题。

 1、  字符串前加上L,如L"fox",这是unicode的原因。

 2、  有些函数不一样了,与第一个链接,比如GetValue,现在应该写成get_value,这都是笔者一下下调对的,还有一些代码有错误,不过至少下面的代码运行无误。

1. 建立MFC工程,MDI(基于对话框),其他默认即可。

2. 操作Excel文件初始化:

a. project->add class->MFC class from typelib (项目->添加类->Typelib中的MFC类)导入Excel.exe,一般都在C:/Program Files/Microsoft Office/Office12路径下(即选择你的office安装路径下的excel.exe加入)

b. 选中以下几项_Application,_WorkSheet,_WorkBook,WorkSheets,WorkBooks,Range,然后导入;

c. 导入后自动在工程中添加CApplication,CWorkSheet,CWorkBook,CWorkSheets,CWorkBooks,CRange这些类;

然后需要把这些类的头文件中的第一句话 #import ".......EXCEL.EXE" nonamespace 删除;

引入之后如果编译遇到错误,Not enough actual parameters for macro 'DialogBoxW'. 让人头疼!

解决方法是在CRange类中,

VARIANT DialogBox() { VARIANT result; InvokeHelper(0xf5, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL); return result; }

DialogBox()前面添加下划线变成_DialogBox(),解决了!

3.操作excel文件

在“资源”里面选择MFC自动建立的对话框,双击“打开”按钮(若没有就自己做一个),然后程序会将你到对这个按钮的函数里,在函数中写如下内容: (文件是CxxxDlg.cpp  xxx是你的项目名称)

void Cexcel打开3Dlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CApplication app; CWorkbooks books; CWorkbook book; CWorksheets sheets; CWorksheet sheet; CRange range; CRange iCell; LPDISPATCH lpDisp; COleVariant vResult; COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if(!app.CreateDispatch(L"Excel.Application")) { AfxMessageBox(L"无法启动Excel服务器!"); return; } books.AttachDispatch(app.get_Workbooks()); lpDisp = books.Open(“d://test.xls”,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional,covOptional); //得到Workbook book.AttachDispatch(lpDisp); //得到Worksheets sheets.AttachDispatch(book.get_Worksheets()); //得到当前活跃sheet //如果有单元格正处于编辑状态中,此操作不能返回,会一直等待 lpDisp=book.get_ActiveSheet(); sheet.AttachDispatch(lpDisp); //读取第一个单元格的值 range.AttachDispatch(sheet.get_Cells()); range.AttachDispatch(range.get_Item (COleVariant((long)2),COleVariant((long)1)).pdispVal ); /*COleVariant*/ vResult =range.get_Value2(); CString str; if(vResult.vt == VT_BSTR) //字符串 { str=vResult.bstrVal; } else if (vResult.vt==VT_R8) //8字节的数字 { str.Format(L"%f",vResult.dblVal); } /*else if(vResult.vt==VT_DATE) //时间格式 { SYSTEMTIME st; VariantTimeToSystemTime(&vResult.date, &st); } else if(vResult.vt==VT_EMPTY) //单元格空的 { str=""; }*/ books.Close(); app.Quit(); // 退出 //释放对象 range.ReleaseDispatch(); sheet.ReleaseDispatch(); sheets.ReleaseDispatch(); book.ReleaseDispatch(); books.ReleaseDispatch(); app.ReleaseDispatch(); OnOK(); MessageBox(str); }

开始有一个教程没有如下代码(上一个代码框已包含)

books.Close(); app.Quit(); // 退出 //释放对象 range.ReleaseDispatch(); sheet.ReleaseDispatch(); sheets.ReleaseDispatch(); book.ReleaseDispatch(); books.ReleaseDispatch(); app.ReleaseDispatch();

这样会导致程序在关闭以后仍然有excel的进程存在,文件不关闭,使用以上代码后解决。

另外,在这个文件的前端记得加入:

#include "CApplication.h" #include "CRange.h" #include "CWorkbook.h" #include "CWorkbooks.h" #include "CWorksheet.h" #include "CWorksheets.h"

运行结果是,程序会将d:/test.xls打开,并且在对话框中输入格(1,1)的数据。

VS2008环境使用MFC操作读取excel文件相关推荐

  1. python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    详解pandas库pd.read_excel操作读取excel文件参数整理与实例 来源:中文源码网    浏览: 次    日期:2019年11月5日 详解pandas库pd.read_excel操作 ...

  2. python read_excel header_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  3. 【python】pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  4. 关于MFC中读取EXCEL文件的操作

    转自:点击打开链接 .h文件的源码代码如下: 其中的头文件都是OLE的头文件.如何导出可以参考 http://blog.csdn.net/wyz365889/article/details/75999 ...

  5. MFC读取Excel文件+数据处理+写入Excel

    在日常编程的过程中,我们经常会遇到需要读写文件的操作,当然,最好的选择是数据库来进行读写,但是由于数据库使用环境的要求(比如某些数据库要求必须安装数据库软件后才能使用),同时,要进行数据库操作需要对S ...

  6. python读取excelsheet-python实现读取excel文件中所有sheet操作示例

    本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...

  7. python3读写excel文件_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

  8. python循环读取excel存入列表_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

  9. python 读excel中的sheet_python实现读取excel文件中所有sheet操作示例

    本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...

最新文章

  1. 学完这份「计算机基础知识」,你也可以来字节跳动(附下载)
  2. AAAI | 深度生成模型—NEVAE
  3. zookeeper的单实例和伪集群部署
  4. MGraph图(代码、分析、汇编)
  5. (转微软网站)如何安装 Microsoft Dynamics CRM 4.0 具有最低必需权限
  6. MyBatis的逆向工程工具,自动生成数据库对应的POJO实体类、mapper接口、增删改查mapper.xml文件
  7. 写日历的程序员,你必须弄懂的中国农历算法。
  8. Apple Cached Service 导致 iPhone app store无法下载程序
  9. java sdk设计原则_java 设计模式遵循的六大原则
  10. Kubernetes网络方案的三大类别和六个场景
  11. python struct_struct
  12. CNDS-Markdown之公式编辑(一)
  13. R语言空间权重矩阵columbus及画图
  14. 配置嵌入式Servlet容器
  15. 网络云存储技术Windows server 2012 (项目十七 配置iSCSI传输的安全性)
  16. 富瑞和SMBC Group宣布结成战略联盟来推动增长
  17. 贪心法--->1.会议安排问题
  18. C语言之:数组的定义和初始化必备练习题
  19. 游戏安全反外挂-驱动的认识
  20. php 文件图片上传

热门文章

  1. 抖音平台机制有哪些,热门机制算法和好友推荐机制是什么
  2. PostgreSQL安装(Mac)
  3. 别再翻了,手撕面试官,网络分层就靠它!
  4. 解决使用360卫士清理后出来的系统异常故障
  5. ice storm暴风雪加盟_在暴风雪里玩命逃生!《Storm VR》上架Steam
  6. Lucene全文搜索学习笔记(一)
  7. 专访三桐:阿里人工智能搜索应用的交互式未来
  8. Galaxy A系列新品亮相,看三星如何解决年轻消费痛点?
  9. 我会java什么梗_“你好坏哦,我好喜欢”是什么梗?出自哪里?
  10. 图片处理GUI界面(手把手带你创建)