求教MFC操作EXCEL的教程(老是CreateDispatch返回FALSE)

TCSS001 2014-02-25 09:06:47
想实现从MFC(VC++)窗口到处数据到EXCEL中,实现功能很简单:就是把计算的结果保存起来,同时贴上两张系统图。



参考的教程为:http://blog.csdn.net/shuilan0066/article/details/7936336
也是CSDN上的一个博客文章。
if( !app.CreateDispatch("Excel.Application") ){  
this->MessageBox("无法创建Excel应用!");
return;
}



但是每次运行到上面的位置,就进入了IF语句中了.......
代码我直接复制的,唯一的区别就是我用的是office2010(相应的我生成的也是office2010下的EXCEL.CPP和EXCEL.H)



再后来就开始搜教程,有地方提到初始化之类的问题,我都按照建议尝试了,但是没什么效果.....
链接:http://bbs.csdn.net/topics/330181316
这里他说找到了解决方案,但是每看懂是什么意思..


...全文
684 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_25064139 2015-11-25
  • 打赏
  • 举报
回复
if( !app.CreateDispatch("Excel.Application") ){ this->MessageBox("无法创建Excel应用!"); return; } 在这段代码之前重新初始化一下 加入CoInitialize(NULL);就OK了
devilthelover 2015-05-19
  • 打赏
  • 举报
回复
我写过现成可用的Excel操作类,你可以直接拿去用。
TCSS001 2014-02-27
  • 打赏
  • 举报
回复
没人回答我自己补充一点吧,这里怀疑问题出在.dll文件没有注册上,不过在release模式下调试就没有问题。 如果有人出现类似问题可以考虑进行尝试。 PS:在release模式下你的程序可能会出现一些莫名其妙的问题,而且无法设置断点进行调试,不过这些问题一般都是程序代码不严谨导致的,可以试着采用messagebox查找原因。
TCSS001 2014-02-26
  • 打赏
  • 举报
回复
多谢孤客天涯的指导,经过自己的摸索,发现,如果改成release调试,结果就可以正常操作EXCEL,不知道是什么原因,放在别的电脑上也没问题......
TCSS001 2014-02-25
  • 打赏
  • 举报
回复
我刚才换了个电脑测试了一下,环境:vc6.0 win7 office2010编译通过了。。。。
孤客天涯 2014-02-25
  • 打赏
  • 举报
回复
改成if( !app.CreateDispatch(_T("Excel.Application"))试试看,从目前你提供的代码,看不出什么问题
TCSS001 2014-02-25
  • 打赏
  • 举报
回复
快愁死了都,C++写得是真心着急。
TCSS001 2014-02-25
  • 打赏
  • 举报
回复
引用 4 楼 K616358281 的回复:
[quote=引用 3 楼 jason_wentzel 的回复:] CreateDispatch你是在主线程执行还是在子线程执行?
主线程中,我压根都没考虑多线程.... 我刚才在网上下载了个实例程序,用到EXCEL操作了,发现问题依旧。。。 我在怀疑是不是电脑的问题,我刚重装的系统,装的是OFFCIE 2010官方原版(office profe plus),现在正在尝试装2003测试。 除了这方面的问题还有啥可能哦。。。 我在注册表里看了的,office安装是正常的。[/quote] 我现在在想,到底要不要这个功能,如果这么鸡肋,还不如就不要算了...
TCSS001 2014-02-25
  • 打赏
  • 举报
回复
引用 3 楼 jason_wentzel 的回复:
CreateDispatch你是在主线程执行还是在子线程执行?
主线程中,我压根都没考虑多线程.... 我刚才在网上下载了个实例程序,用到EXCEL操作了,发现问题依旧。。。 我在怀疑是不是电脑的问题,我刚重装的系统,装的是OFFCIE 2010官方原版(office profe plus),现在正在尝试装2003测试。 除了这方面的问题还有啥可能哦。。。 我在注册表里看了的,office安装是正常的。
孤客天涯 2014-02-25
  • 打赏
  • 举报
回复
CreateDispatch你是在主线程执行还是在子线程执行?
TCSS001 2014-02-25
  • 打赏
  • 举报
回复
对了,我在这之前已经初始化过来,初始化的部分代码:
BOOL CHandle_excelApp::InitInstance()
{
	AfxEnableControlContainer();

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.
	
	if (CoInitialize( NULL )!=NULL)
	{
	AfxMessageBox(_T("初始化Com失败!"));
	}

这里并没有报错..... 可是创建的时候却报错了。
TCSS001 2014-02-25
  • 打赏
  • 举报
回复
没有人么,求助啊....

16,505

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧