最近在做一个往Excel文件里写入数据的程序,研究了一下怎样通过MFC操纵Excel,在这里总结一下。
我想很多人在开始实现一个功能的时候会先去网上搜一下有没有现成的代码可供使用,可是从网上找到的代码肯定是不能直接跑的(我从来没有遇到可以拿过来直接用的,很是郁闷),这次也不例外,所以这里先声明下面的代码使用了优快云博主Augusdi的代码http://blog.youkuaiyun.com/Augusdi/archive/2010/08/01/5781126.aspx
我的工作是让那个代码拿过来直接可以用。为此我上网查了两天的资料,用一天时间看了潘爱明老师《COM原理与应用》的一百多页内容,终于成功了,下面是整个过程:
电脑环境: 操作系统:WINXP Professional service pack3
开发环境:VC6.0
OFFICE:2003
建立MFC automation工程:选择“新建”-->MFC Appwizard(exe)输入工程名称点“下一步”
选择“基本对话框”然后“下一步”
在“您希望包含什么其他支持?”下面的“自动操作(U)”前面打钩,这是选择automation支持,然后点击“完成”
这样就建好了一个支持automation的MFC基于对话框的工程。
接下来往工程里添加Excel组件对象的类:
选择“查看(View)”-->建立类向导,选择“automation”这一页,点击“Add Class”右面的向下箭头选择“from a type library”,进入office2003的安装目录:C:/Program Files/Microsoft Office/OFFICE11,选择里面的EXCEL.EXE
接下来就可以按照Augusdi这位仁兄说的做了,有一点不同的是不需要在 CxxxApp::InitInstance()中添加
if(!AfxOleInit())///初始化COM库
{
AfxMessageBox("初始化COM失败");
return FALSE;
}
这些代码了,因为MFC的automation已经为你做好了
另外还要补充的是如果你的Excel没有成功安装,那么Excel的COM组件就不能成功初始化,请确定你的注册表里有正确的Excel组件的信息,具体请参考潘爱民的《COM原理与应用》第60页到第65页的内容,毕竟写代码还是要看一些东西的,是吧?^_^
最后我想说的是:刚开始我按照Augusdi仁兄说的那样做可是总是弹出"创建Excel服务失败!"这样的错误,在此之前我是对COM组件一窍不通,去网上搜也没什么结果,最后下决心开始看《COM原理与应用》,看到第364页有这样一句话“创建工程时指定Automation选项”,赶快建立工程选择选项,成功了!还是那句话:计算机严格按照程序执行,计算机是不会错的,错的总是我们。还有一句话:只有搞清楚原理才能定位问题,只有定位了问题才可以谈解决问题!!!