Qt对word文档操作总结

news/2024/10/30 19:36:59/

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

http://www.ppmy.cn/news/513121.html

相关文章

【AndroidUI设计】主界面设计-Toolbar的简单使用

文章目录 一、引言二、了解三、编码1、UI设计2、编码 一、引言 描述&#xff1a;需要设计一个主界面&#xff0c;菜单通过主界面的左边界划入&#xff0c;实现点击跳转修改主界面内容的一个效果&#xff0c;并且点击非内容区域恢复原界面的一个效果。做到菜单的弹出&#xff0…

LLM系列 |10: 如何编写思维链Prompt?以智能客服为例

简介 黄梅时节家家雨&#xff0c;青草池塘处处蛙。 小伙伴们好&#xff0c;我是微信公众号《小窗幽记机器学习》的小编&#xff1a;卖红枣粽的小女孩。紧接前面几篇ChatGPT Prompt工程系列文章&#xff1a; 04:ChatGPT Prompt编写指南05:如何优化ChatGPT Prompt&#xff1f;…

NUCLEO-F411RE RT-Thread 体验 (8) - GCC环境 TIM定时器的驱动移植以及基本使用

NUCLEO-F411RE RT-Thread 体验 (8) - GCC环境 TIM定时器驱动移植与基本使用 驱动移植 定时器驱动文件位于drv_hwtimer.c中&#xff0c;对应components层的文件位于rt-thread/components/drivers/hwtimer/hwtimer.c中。 修改Makefile&#xff0c;将其编译进去。 在rtconfig.h…

网络打印机打印超慢或者打印不出的问题解决方法

网络打印机打印超慢或者打印不出 1。检查打印服务器本地打印是否正常 如果本地打印不出&#xff0c;检查打印机硬件是否完好&#xff0c;打印机与计算机连接线是否有断裂&#xff0c;重新安装打印驱动。 2。检查网络连接是否正常&#xff0c;是否能连通打印服务器 如果不能…

2021-11-11

安装SSMS时提示安装失败&#xff0c;证书已被颁发者直接吊销(0x800B010C)解决方法 网上有教程说下载什么什么软件解决的&#xff0c;最后也没解决。其实没那么复杂&#xff0c;直接到官网下载个新版本安装就可以了。点击这里获取官方下载地址。 找到需要的语言下载就可以&#…

Mac打印机提示“光电导元件已报废”无法打印

问题原因 驱动不匹配&#xff0c;去官网下载驱动&#xff0c;然后重新添加打印机即可。 注意事项 重新添加打印机的时候&#xff0c;不要通过ip添加。 直接通过安装好的驱动来添加即可。

打印机添加或者设置流程

作者&#xff1a;蓝眼泪 这里以震旦打印机的添加作为参考 环境准备&#xff1a;xp&#xff0c;win7或者win10操作系统&#xff0c;震旦打印机驱动。 1 开始 运行 输入命令 control 2 选择类别&#xff0c;打印机 3 添加打印机-我需要的打印机未列出&#xff0c;tcp/it,下一步…

win10系统安装打印机失败如何解决?

驱动人生说道&#xff0c;随着win10系统的普及&#xff0c;越来越多的小伙伴用上了win10系统。基本你win10安装好系统之后就能自动帮你打好驱动了&#xff0c;不需要你自己去安装驱动 但是&#xff0c;小编还是用的win7&#xff0c;因为习惯问题感觉用win10挺变扭的&#xff0…