Qt对word文档操作总结

近期在使用Qt对word进行读写操作时候遇到很多问题,对于Qt内部没有很好的库函数可以使用。office官网上的文档只有VBA的示例,没有Qt的语法例子。在这里作者介绍了一个流程可以在Qt上完美对接Word接口。

QT += axcontainer

Qt虽然没有很好地提供office的接口,但是还是提供了一个对COM object操作的方法。

Header:#include <QAxObject>
qmake:QT += axcontainer
Inherits:QObject and QAxBase
Inherited By:QAxScriptEngine

在这里我们可以使用QAxObject对象,操作office。
主要利用以下几个函数:

setProperty()     // 设置对象一些成员函数属性
querySubObject()  // 获取一些成员对象
dynamicCall()     // 执行一些对象的函数

这里先不介绍怎么用,在本文最后会讲解。

Word宏

word宏对于非开发word的人员基本用不上,但是我们要对接office,需要对此有一定了解。

在word的视图中可以找到此位置。

那宏代表了什么意思呢?其实就是我们人为在word中进行操作过程转换为了代码形式。那我们拿到对应的代码形式,转换为Qt可以执行的代码,那我们是不是可以通过Qt对office进行操作了?

这里我们通过对word插入分页符操作进行举例。

  1. 我们先点击录制宏
  2. 鼠标点击插入的分页
  3. 然后点击宏中的停止录制

  1. 然后点击查看宏
  2. 在跳出的窗口中对刚刚操作的宏点击编辑
  3. 在跳出的窗口中可以看见对应代码
    至此,我们获得了office word对于分页操作的代码。

其实就是中间的Selection.InsertBreak Type:=wdPageBreak
就是对Selection对象的方法InsertBreak进行操作

Word帮助文档

  1. 点击word 2010开发人员参靠


2. 点击word对象模型参考
3. 点击word对象模型参考

4. 找到Selection对象,点击进去

5. 点击Selection对象成员,点击进去找到InsertBreak

6. 可以点击InsertBreak

在这里可以看到此方法的具体说明。

Qt中的具体使用方法

我们在上面的方法中找到了具体的使用函数。

QAxObject* wordApplication = new QAxObject("Word.Application");
QAxObject* applicationDocuments = wordApplication->querySubObject("Documents");
QAxObject* activeDocument = wordApplication->querySubObject("ActiveDocument");//获取当前激活的文档
QAxObject* selection = wordApplication->querySubObject("Selection");
selection->dynamicCall("InsertBreak(int)", 7);

首先先获取一个word对象,然后得到当前激活的文档,然后获取选择的对象Selection,就和上面的Selection对象一样,然后用dynamicCall方法执行Selection的InsertBreak方法。
相同地,我们也可以得到很多类似的操作如:

保存文件:

 activeDocument->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(wordSaveName));

插入文字:

wordSelection->dynamicCall("TypeText(const QString&)",text);

设置居中:

 wordSelection->querySubObject("ParagraphFormat")->setProperty("Alignment","wdAlignParagraphCenter");

设置字体大小:

  wordSelection->querySubObject("Font")->setProperty("Size",fontsize);

Qt对word文档操作总结相关推荐

  1. 【QT】word文档操作实例——根据word模板生成word报表

    文章目录 引言 一.word模板准备 二.WordDemo实现 1.mainwindow.ui 2.mainwindow.h 3.mainwindow.cpp 三.实现效果 引言 在QT5.3中,在. ...

  2. QT读取Word文档

    Word文档读取 开发工具与关键技术:QtCreator.C++ 作者:何任贤 撰写时间:2020年06月02日 Word文档读取 我们先要在工程文件加入 QT += axcontainer 我们要用 ...

  3. C++实例(十)Word文档操作

    Word文档操作 一.Word文档的基本操作 打开Word文档 在开发应用程序时,有时需要调用Word文档,如果让用户在磁盘中寻找文档将会很麻烦. 读取Word文档文本内容 在使用程序控制Word文档 ...

  4. QT 生成word文档

    这篇文章在原博客上加上了一些原博主没有写出的一些细节访问的东西,(间接抄袭.......) 原博客 :http://blog.csdn.net/zhangfuliang123/article/deta ...

  5. Qt实现word文档转html

    最近在做编辑器,要读取Word文档,但是QT的QTextEdit没办法直接读取,网上查了好多资料也没有找到解决办法,只好自己动手,现在发出来,给大家提供个方便.(doc和docx格式均可以) 主要原理 ...

  6. 实现QT打开Word文档

    通过QT实现点击按钮打开Word文档,需要用到QProcess,在程序中加入#include <QProcess>. 代码: .h文件 #ifndef SIDEBAR_H #define ...

  7. XWPF POI word文档操作

    运用Poi的XWPF操作word文档 Word文档基础知识的简介 word文档包括 页眉.页脚.脚注.批注.链接.正文部分,在XWPF中都有与之对应的类: .docx文件的文档的根 XWPFDocum ...

  8. golang转word到html,golang 解析word文档操作

    baliance/gooxml gooxml是可以对整个office document提供支持的golang库,功能很强大,这里简单给出对word文档的读取案例 安装 go get baliance. ...

  9. QT打开Word 文档

    转载:QT如何用QProcess打开一个word文档?_百度知道 (baidu.com) 坑死了,网上好多类似的,但是不说清楚,对新手太不友好了! 需要加上#include <QProcess& ...

最新文章

  1. 2017中国互联网消费生态大数据报告
  2. TypeScript初探
  3. R语言观察日志(part11)--好用的R命令之高效安装
  4. 如何处理SAP Fiori gateway service使用过程中遇到的404 error
  5. 《孙子兵法》【作战第二】
  6. 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程
  7. java 静态变量的使用_java的static静态变量是不是不安全的?应该如何正确的使用他呢...
  8. PotPlayer:最强播放器,无边框
  9. Pairs Forming LCM(素因子分解)
  10. python分割文件为小文件_Python实现将一个大文件按段落分隔为多个小文件的简单操作方法...
  11. Kettle下载资源
  12. YYUC输出联动select标签
  13. Qt-QtDesigner插件编写
  14. java field 赋值_Java Field.set()向对象的这个Field属性设置新值value
  15. matlab程序是什么格式,科学网—Matlab中的P代码文件 - 杨笔锋的博文
  16. ASEMI肖特基二极管MBR10100FCT关键参数及选型要点
  17. Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数[转]
  18. JOJ 上的典型题目分类以及参考书目 (以及我的整理)
  19. 香港20年十大最具影响力电影
  20. 题目 2214: 快速排序

热门文章

  1. windows phone水平滑动翻页动画效果
  2. 锁定Mac电脑的8种方法
  3. 程序员久坐伤身,站起来,走出去,别回来
  4. 做一个官网企业网站费用大概需要多少钱?
  5. 基于Linux下的VIC使用(2)Routing部分(Fortran版本)
  6. 小明加密通道进入_「成都全接触」最新!成都8条地铁进展来了!年底还有5条铁路、9条通道!...
  7. 服务器安全策略、密码策略、服务器审计
  8. SMM框架学习日志——Spring详述
  9. FJUT ACM 1212 集训队的药药切克闹
  10. 区块链在金融领域的应用案例