天天看點

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());
           

繼續閱讀