QT C++ 基于word模板 在书签位置写入文字和图片

如果你有按模版批量自动化操作word文件的需求,那么本文能给你一定的帮助。

它能满足你程序自动化生成报表的需求。常常用于上位机、测试仪器的软件中。

需要你你自己做个word模版文档,添加2个书签。点按钮,会按照你的模板文档生成一个同样的文档,在书签的位置添加(替换)文字和图片,从而实现自动批量化操作。

QT6.2.4 MSVC2019 调试通过。

在文章的最后列出了代码下载链接。

但是从打开文件到写完文件,需要6秒左右时间,哪位有好的方案可以缩短时间。

//1.界面

//界面很简单,就一个写操作的按钮。

//2.头文件

//--------------------------------------------------------------------------------------------------------------

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>

#include <ActiveQt/QAxObject>
#include <ActiveQt/QAxWidget>

#include "CWordOperation.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void initUI();
    QPushButton* btn_write ;

private:
    Ui::Widget *ui;
    CWordOperation opt;
private slots:
    void btn_write_click();
};
#endif // WIDGET_H

//----------------------------------------------------------------------------------------------------------------

//3.cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    initUI();
}
void Widget::initUI()
{
    QVBoxLayout* vlayout = new QVBoxLayout();
    btn_write = new QPushButton(this);
    btn_write->setText("写入word文档");
    btn_write->setFixedWidth(100);
    vlayout->addWidget(btn_write);
    setLayout(vlayout);
    QObject::connect(btn_write, &QPushButton::clicked,this,&Widget::btn_write_click);

}
void Widget::btn_write_click()
{
    //qDebug()<<"void Widget::btn_write_click()";
    opt.openFile("d:/word5.docx", false);
    // 添加文字
    opt.appendBookMarksText("bookmark1", "Lei_Jun");//书签位置替换文字
    // 添加图片
   //String tempFilePath = "d:/output/LeiJun.png";//labview.jpeg
    QString tempFilePath = "d:/output/labview.jpeg";//labview.jpeg
    opt.replaceBookmarkWithImage("bookmark2", tempFilePath);//书签位置替换图片
    opt.saveAs(u8"d:/output/output.docx");
    opt.closeFalse();
}
Widget::~Widget()
{
    delete ui;
}

//---------------------------------------------------------------------------------------------------------------------

//4.CWordOperation类

//写文字的函数原型:

//bool CWordOperation::appendBookMarksText(const QString & strBookmark, const QString & strText)

//写图片的函数原型:

bool CWordOperation::appendBookMarksText(const QString & strBookmark, const QString & strText)

//下载链接

https://download.csdn.net/download/weixin_39926429/89377300

//5.参考代码下载链接

https://download.csdn.net/download/weixin_39926429/89377344

//6.word添加书签的方法

                                        图1-添加书签示意图

分5步:

第1步:光标移动到合适的位置

第2步:点菜单的"插入"

第3步:点菜单的书签,弹出一个框

第4步:对话框的最上面的文本框内输入"书签名",我输入的是bookmark1

第5步:点添加按钮,对话框关闭,添加了书签。

完了保存和关闭文档。就已经生成了模版。

说明:可以看到我添加了2个书签,"bookmark1"、"bookmark2"

它是个字符串

word模板文件下载链接

https://download.csdn.net/download/weixin_39926429/89377592

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】在线考试系统 JAVA+Vue.js+SpringBoot 新手入门项目

目录 一、项目介绍 二、项目截图 三、核心代码 【开源】在线考试系统 JAVAVue.jsSpringBoot 新手入门项目 一、项目介绍 经典老框架SSM打造入门项目《在线考试系统》&#xff0c;包括班级模块、教师学生模块、试卷模块、试题模块、考试模块、考试回顾模块&#xff0c;项目编…

出吉林大学计算机考研资料适用于计专966/计学941/软专967

本人是24上岸吉大计算机专硕的考生&#xff0c;先上成绩&#xff1a; 出专业课备考过程的相关笔记资料&#xff0c;也可以提供经验分享等&#xff1a; 吉林大学计算机数据结构基础算法ADL汇总&#xff0c;适用于计专966/计学941/软专967综合整理小绿书以及期末题上重难点算法…

linux中的“->“符号

问&#xff1a; "->“符号在Linux中是什么意思。 例如&#xff1a;当我在一个特定的文件夹中执行ls -l时&#xff0c;我得到了以下结果。 lrwxrwxrwx 1 root root 11 May 16 13:30 nexus3 -> /nexus-data lrwxrwxrwx 1 root root 29 Feb 27 12:23 ojdbc.jar -&g…

Linus Torvalds把控着linux内核开发审核,他去世之后linux内核会怎样?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; Linus Torvalds 是 Linux…

Docker安装Zookeeper(单机)

Docker安装Zookeeper&#xff08;单机&#xff09; 目录 Docker安装Zookeeper&#xff08;单机&#xff09;拉取镜像创建目录添加配置文件启动容器测试 拉取镜像 docker pull zookeeper创建目录 mkdir -p /data/zookeeper/data # 数据挂载目录 mkdir -p /data/zookeeper/conf…

CSS学习笔记目录

CSS学习笔记之基础教程&#xff08;一&#xff09; CSS学习笔记之基础教程&#xff08;二&#xff09; CSS学习笔记之中级教程&#xff08;一&#xff09; CSS学习笔记之中级教程&#xff08;二&#xff09; CSS学习笔记之中级教程&#xff08;三&#xff09; CSS学习笔记之高级…

在 CentOS 7 上安装并配置 Redis 允许远程连接的详细教程

第一部分&#xff1a;安装 Redis Redis 是一款高性能的键值存储系统&#xff0c;广泛应用于缓存、消息队列及数据库场景。下面是如何在 CentOS 7 系统上安装 Redis 的步骤。 步骤1&#xff1a;安装 EPEL 仓库 EPEL (Extra Packages for Enterprise Linux) 提供了许多 CentOS 默…

深入理解Linux路由表

目录 引言路由表基础路由表的组成查看路由表修改路由表添加路由添加一条默认路由删除路由修改路由常见路由配置场景默认路由静态路由多网卡配置结论在Linux系统中,路由表是网络通信的关键组成部分,它决定了数据包如何从源地址传输到目的地址。理解和管理Linux路由表对于网络管…

Docker 环境下 3D Guassian Splatting 的编译和配置

Title: Docker 环境下 3D Guassian Splatting 的编译和配置 文章目录 前言I. 宿主系统上的安装配置1. 安装 nvidia driver2. 安装 docker3. 安装 nvidia-container-toolkit II. Docker 容器安装配置1. 拉取 ubuntu 22.042. 创建容器3. 进入容器4. 容器中安装 cuda SDK5. 容器中…

Unity中Tilemap Layer详解

Unity中Tilemap Layer详解 在Unity中&#xff0c;Tilemap的Layer用于管理和组织Tilemap中的瓷砖&#xff08;Tiles&#xff09;&#xff0c;允许你在同一个场景中创建多个重叠的Tilemap层&#xff0c;以便更灵活地处理不同的图层效果&#xff0c;如背景、前景和碰撞层等。以下…

超简单白话文机器学习 - 模型检验与评估(含算法介绍,公式,源代码实现以及调包实现)

1. 模型检验 1.1 Holdout交叉验证 1.1.1 算法 在这种交叉验证技术中&#xff0c;整个数据集被随机划分为训练集和验证集。根据经验&#xff0c;整个数据集的近 70% 用作训练集&#xff0c;其余 30% 用作验证集。 优点&#xff1a;可以快速进行区分&#xff0c;仅仅通过一次区…

从零开始:CANDelaStudio之CDD S3 Server时间异常

0 前言 关于CDD制作有疑问的小伙伴可以参考以下文章&#xff1a; 从零开始&#xff1a;CANDelaStudio之CDD制作&#xff08;一&#xff09; 从零开始&#xff1a;CANDelaStudio之CDD制作&#xff08;二&#xff09; 本文主要对日常在CDD中碰到的一些问题做一个补充。 1 …

如何获知表中数据被删除

目录 1. 使用触发器 (Triggers)示例 2. 使用审计工具 (Audit Tools)示例 3. 使用Binlog (Binary Log)示例 4. 使用应用层记录日志示例 总结 要查询 MySQL 数据库表中的数据何时被删除&#xff0c;可以采取以下几种方法&#xff1a; 1. 使用触发器 (Triggers) 可以在表上创建一…

生成树协议STP(Spanning Tree Protocol)

为了提高网络可靠性&#xff0c;交换网络中通常会使用冗余链路。然而&#xff0c;冗余链路会给交换网络带来环路风险&#xff0c;并导致广播风暴以及MAC地址表不稳定等问题&#xff0c;进而会影响到用户的通信质量。生成树协议STP&#xff08;Spanning Tree Protocol&#xff0…

Spring Cloud Alibaba-09-Seata分布式事务

Lison <dreamlison163.com>, v1.0.0, 2024.5.03 Spring Cloud Alibaba-09-Seata分布式事务 文章目录 Spring Cloud Alibaba-09-Seata分布式事务分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务的解决方案全局事务可靠消息服务最大努力通知TCC事务 Se…

PDF高效编辑器革新:一键智能转换PDF至HTML,轻松开启文件处理全新时代!

信息爆炸的时代&#xff0c;PDF文件因其跨平台、不易修改的特性&#xff0c;成为了商务、教育、出版等领域不可或缺的文件格式。然而&#xff0c;PDF文件的固定性也带来了诸多不便&#xff0c;特别是在需要对其内容进行编辑或格式转换时。这时&#xff0c;一款高效、易用的PDF编…

【CSDN不太方便,以后学习在有道】

【有道云笔记】程序员学习规划

基于Springboot + vue实现的文化民俗网站

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

宝塔 nginx 配置负载均衡 upstream

nginx 主配置文件加入 upstream myapp1 {server 192.168.124.101:5051;server 192.168.124.102:5052;server 192.168.124.111:5050;}站点配置文件中加入 location / {proxy_pass http://myapp1;}80端口映射到外网域名配置方法 加入红框中的代码 upstream myapp3 {server 192.16…

protobufjs 配置踩坑记录

本文主要是小程序使用PB协议&#xff0c;以下时博主遇到的问题以及解决办法。 1、安装protobufjs npm install --save protobufjs 注意&#xff1a;我之前也使用过 npm install -g protobufjs去安装&#xff0c;但是出现以下的问题&#xff0c;关键是我使用sudo 清除相关文件…