天天看点

qt中如何使用ActiveX读写wordqt中如何使用ActiveX读写word

qt中如何使用ActiveX读写word

参考资料

首先要搞懂COM的原理

推荐书籍潘爱民的《COM原理与应用》

其次推荐Qt帮助中的几个关键词:Active Qt,QAxBase,QAxObject and QAxWidget

同时推荐《word实战精粹》中关于在word2010中录制宏的方法

其它参考链接如下

COM相关书籍推荐

如何查找和使用 Office 对象模型文档

使用 Visual C++ 的办公室自动化

添加ActiveQt模块

在Qt creator中的Pro文件中添加CONFIG+=axcontainer,注意这是在Qt5中,Qt4中添加CONFIG+=qaxcontainer

在VS2013+Qt5中在Pro文件添加上面的配置没有效果,会提示链接错误

qt中如何使用ActiveX读写wordqt中如何使用ActiveX读写word

解决方法:VS2013菜单栏Qt5-》Qt Project Setting-》勾选Active Qt

qt中如何使用ActiveX读写wordqt中如何使用ActiveX读写word

同时记得添加头文件

#include <ActiveQt/QAxBase> 
#include <ActiveQt/QAxWidget>
#include <ActiveQt/QAxObject>
           

路径问题

最后说一下楼主自己遇到傻逼问题

加载外部图像或文件的路径时如果路径表示为字符串常量,记得使用完整绝对路径加转义字符表示路径分割符

像下面这种肯定是找不到的

documents->dynamicCall("Add(QString)",".//template.dot");
documents->dynamicCall("Add(QString)","template.dot");
           

最好利用Qt的QDir类

documents->dynamicCall("Add(QString)",QDir("./template.dot").absolutePath());