如何使用Qt操作word,实现插入图片和表格的功能?

big_mouse 发布于 2013/08/06 20:58
阅读 4K+
收藏 0
Qt

操作word的步骤:

1.新建一个文件,在绘制好的表格需要插入数据的地方设置书签(插入->书签),另存为模版文件(.dot)

2.新建一个Qt工程,在main文件中如下定义:

#include <QtGui/QApplication>
#include <QAxWidget>
#include <QAxObject>
 
int main(int argc, char* argv[])
{
 QApplication app(argc, argv);
 // 新建一个word应用程序,并设置为可见
 QAxWidget *word=new QAxWidget("Word.Application", 0, Qt::MSWindowsOwnDC);
 word->setProperty("Visible", true);
 // 获取所有的工作文档
 QAxObject * documents = word->querySubObject("Documents");
 // 以文件template.dot为模版新建一个文档
 documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("D:/template.dot"));
 // 获取当前激活的文档
 QAxObject *document=word->querySubObject("ActiveDocument");
 // 获取文档中名字为text的标签
 QAxObject*bookmark_text=document->querySubObject("Bookmarks(QVariant)","code");
 // 选中标签,将字符InsertText插入到标签位置
 if(!bookmark_text->isNull()){
 bookmark_text->dynamicCall("Select(void)");
 bookmark_text->querySubObject("Range")->setProperty("Text","InsertText");
 }
 // 获取文档中名字为pic的标签
 QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)","code");
 // 选中标签,将图片插入到标签位置
 if(!bookmark_pic->isNull()){
 bookmark_pic->dynamicCall("AddPicture(void)");
 bookmark_pic->querySubObject("Range")->setProperty("InlineShape","D:/waitting.gif");
 }
 // 将文件另存为docbyqt.doc,关闭工作文档,退出应用程序
 document->dynamicCall("SaveAs (const QString&)", QString("D:/docbyqt.doc"));
 document->dynamicCall("Close (boolean)", false);
 word->dynamicCall("Quit()");
 return app.exec();
}
 


现在可以实现插入Text类型的字符,但是使用Qt操作word,实现插入图片和表格的功能还不能实现,请各路高手帮忙,谢谢。

加载中
0
lcl
lcl
我觉得用c++ 操作word、execl等 主要通过录制宏,然后看VBA代码(只需要一点VB基础)然后翻译成c++就OK!!!
big_mouse
big_mouse
我有VBA文档,但是对VB不是很了解,有没有转换示例呢?
返回顶部
顶部