QT操作word
2016-03-14 08:33
639 查看
QT操作Word
Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合。ActiveQt由两个模块组成:
QAxContainer模块允许我们使用COM对象并且可以在Qt应用程序中嵌入QActive控件。
QAxServer模块允许我们导出使用Qt编写的自定义的COM对象和Active控件。
在这里,我们使用了QAxContainer模块,所以在.pro中,需要使用下面这一项来链接这个QAxContainer模块:CONFIG+=qaxcontainer。在头文件中包含QAxWidget和QAxObject。
操作word的步骤:
1.新建一个文件,在绘制好的表格需要插入数据的地方设置书签(插入->书签),另存为模版文件(.dot)。
2.
新建一个
Qt
工程,在
main
文件中如下定义:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/08/9bab026066c6cb464ebe4e09fac058d5)
2.
新建一个
Qt
工程,在
main
文件中如下定义:
代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/08/c09500c59af435bbba0bfa4d963c0d31)
2.
新建一个
Qt
工程,在
main
文件中如下定义:
解释:
//新建一个word应用程序,并设置为可见
QAxWidget *word=new QAxWidget("Word.Application",this,Qt::MSWindowsOwnDC); word->setProperty("Visible", true); //获取所有的工作文档
QAxObject * documents = word->querySubObject("Documents"); //以文件template.dot为模版新建一个文档
documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("E:/template.dot")); //获取当前激活的文档
QAxObject *document=word->querySubObject("ActiveDocument"); //获取文档中名字为code的标签
QAxObject*bookmark_code=document->querySubObject("Bookmarks(QVariant)","code"); //选中标签,将字符textg插入到标签位置 if(!bookmark_code->isNull()){
bookmark_code->dynamicCall("Select(void)");
bookmark_code->querySubObject("Range")->setProperty("Text","textg"); }
//将文件另存为docbyqt.doc,关闭工作文档,退出应用程序
document->dynamicCall("SaveAs (const QString&)", QString("c:/docbyqt.doc")); document->dynamicCall("Close (boolean)", false); word->dynamicCall("Quit()");
附:导出API使用文档的方法
COM是个自描述的结构,任何第三方软件是可以把这种描述化信息自动导出来的。Qt有方法可以自动导出来的,参考如下代码
QString doc=object.generateDocumentation(); QFile outFile("c:/debuglog.html");
outFile.open(QIODevice::WriteOnly|QIODevice::Append); QTextStream ts(&outFile); ts<<doc<<endl;
导出后你会发现是一个非常好的HTML格式的帮助问题,里面对每一个方法都有调用的详细描述。参考帮助后就能开始自己调用了
2.
新建一个
Qt
工程,在
main
文件中如下定义:
Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合。ActiveQt由两个模块组成:
QAxContainer模块允许我们使用COM对象并且可以在Qt应用程序中嵌入QActive控件。
QAxServer模块允许我们导出使用Qt编写的自定义的COM对象和Active控件。
在这里,我们使用了QAxContainer模块,所以在.pro中,需要使用下面这一项来链接这个QAxContainer模块:CONFIG+=qaxcontainer。在头文件中包含QAxWidget和QAxObject。
操作word的步骤:
1.新建一个文件,在绘制好的表格需要插入数据的地方设置书签(插入->书签),另存为模版文件(.dot)。
2.
新建一个
Qt
工程,在
main
文件中如下定义:
2.
新建一个
Qt
工程,在
main
文件中如下定义:
代码如下:
2.
新建一个
Qt
工程,在
main
文件中如下定义:
解释:
//新建一个word应用程序,并设置为可见
QAxWidget *word=new QAxWidget("Word.Application",this,Qt::MSWindowsOwnDC); word->setProperty("Visible", true); //获取所有的工作文档
QAxObject * documents = word->querySubObject("Documents"); //以文件template.dot为模版新建一个文档
documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("E:/template.dot")); //获取当前激活的文档
QAxObject *document=word->querySubObject("ActiveDocument"); //获取文档中名字为code的标签
QAxObject*bookmark_code=document->querySubObject("Bookmarks(QVariant)","code"); //选中标签,将字符textg插入到标签位置 if(!bookmark_code->isNull()){
bookmark_code->dynamicCall("Select(void)");
bookmark_code->querySubObject("Range")->setProperty("Text","textg"); }
//将文件另存为docbyqt.doc,关闭工作文档,退出应用程序
document->dynamicCall("SaveAs (const QString&)", QString("c:/docbyqt.doc")); document->dynamicCall("Close (boolean)", false); word->dynamicCall("Quit()");
附:导出API使用文档的方法
COM是个自描述的结构,任何第三方软件是可以把这种描述化信息自动导出来的。Qt有方法可以自动导出来的,参考如下代码
QString doc=object.generateDocumentation(); QFile outFile("c:/debuglog.html");
outFile.open(QIODevice::WriteOnly|QIODevice::Append); QTextStream ts(&outFile); ts<<doc<<endl;
导出后你会发现是一个非常好的HTML格式的帮助问题,里面对每一个方法都有调用的详细描述。参考帮助后就能开始自己调用了
2.
新建一个
Qt
工程,在
main
文件中如下定义:
相关文章推荐
- Qt high DPI
- qt 鼠标响应
- Qt例子一 AddressBook测试学习
- 找到Qt程序所有依赖库的简便方法,带翻译文件
- setWindowFlags(Qt::FramelessWindowHint);使得窗体透明的问题解决
- qt做计算器时的想法
- 推荐一个第三方Qt库的集合
- Qt5中使用QTreeWidget实现树层次的勾选
- PyQt5 - QWidgets部件进阶教程之行编辑
- QT5中文显示出现乱码
- PyQt5 - QWidgets部件进阶教程之分组框
- Qt-----实现Udp通信
- Qt实现无边框窗体的移动
- Qt-----发布应用程序
- QML中多个动画的操作
- QT学习之路————QT界面的美化
- Qt发布错误:无法定位程序输入点于动态链接库QtCore5.dll
- Qt Creator 环境介绍
- QT学习之路————如何创建一个线程
- qt好用的文件遍历代码,QFileInfo,QDir